summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/framework/webpack.vendor.js
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/framework/webpack.vendor.js')
-rw-r--r--sdnr/wt/odlux/framework/webpack.vendor.js130
1 files changed, 130 insertions, 0 deletions
diff --git a/sdnr/wt/odlux/framework/webpack.vendor.js b/sdnr/wt/odlux/framework/webpack.vendor.js
new file mode 100644
index 000000000..649c9b974
--- /dev/null
+++ b/sdnr/wt/odlux/framework/webpack.vendor.js
@@ -0,0 +1,130 @@
+/**
+ * Webpack 4 configuration file
+ * see https://webpack.js.org/configuration/
+ * see https://webpack.js.org/configuration/dev-server/
+ */
+
+"use strict";
+
+const path = require("path");
+const webpack = require("webpack");
+
+const TerserPlugin = require('terser-webpack-plugin');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const extractCSS = new ExtractTextPlugin('vendor.css');
+
+// const __dirname = (path => path.replace(/^([a-z]\:)/, c => c.toUpperCase()))(process.__dirname());
+
+module.exports = (env) => {
+ const distPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");
+ const frameworkPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");
+ return [{
+ name: "Vendor",
+ mode: "none", //disable default behavior
+ target: "web",
+
+ context: path.resolve(__dirname, "src"),
+
+ entry: {
+ vendor: [
+ "@babel/polyfill",
+ "@fortawesome/fontawesome-svg-core",
+ "@fortawesome/free-solid-svg-icons",
+ "@fortawesome/react-fontawesome",
+ "jquery",
+ "react",
+ "react-dom",
+ "react-router-dom",
+ "@material-ui/core"
+ ]
+ },
+
+ devtool: env === "release" ? false : "source-map",
+
+ resolve: {
+ extensions: [".ts", ".tsx", ".js", ".jsx"]
+ },
+
+ output: {
+ path: distPath,
+ library: "[name]", // related to webpack.DllPlugin::name
+ libraryTarget: "umd2",
+ filename: "[name].js",
+ chunkFilename: "[name].js"
+ },
+
+ module: {
+ rules: [{
+ test: /\.tsx?$/,
+ exclude: /node_modules/,
+ use: [{
+ loader: "babel-loader"
+ }, {
+ loader: "ts-loader"
+ }]
+ },
+ {
+ test: /\.jsx?$/,
+ exclude: /node_modules/,
+ use: [{
+ loader: "babel-loader"
+ }]
+ },
+ {
+ test: /\.(png|woff|woff2|eot|ttf|svg)$/,
+ loader: 'url-loader?limit=100000&name=assets/[name].[ext]'
+ }, {
+ test: /\.s?css$/i,
+ loader: extractCSS.extract(['css-loader?minimize', 'sass-loader'])
+ }, {
+ test: /\.json$/,
+ loader: 'json-loader'
+ },
+ ]
+ },
+
+ optimization: {
+ noEmitOnErrors: true,
+ namedModules: env !== "release",
+ minimize: env === "release",
+ minimizer: env !== "release" ? [] : [new TerserPlugin({
+ terserOptions: {
+ warnings: false, // false, true, "verbose"
+ compress: {
+ drop_console: true,
+ drop_debugger: true,
+ }
+ }
+ })],
+ },
+
+ plugins: [
+ extractCSS,
+ new webpack.DllPlugin({
+ context: path.resolve(__dirname, "src"),
+ name: "[name]",
+ path: path.resolve(distPath, "[name]-manifest.json")
+ }),
+ ...(env === "release") ? [
+ new webpack.DefinePlugin({
+ "process.env": {
+ NODE_ENV: "'production'",
+ VERSION: JSON.stringify(require("./package.json").version)
+ }
+ })
+ ] : [
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.DefinePlugin({
+ "process.env": {
+ NODE_ENV: "'development'",
+ VERSION: JSON.stringify(require("./package.json").version)
+ }
+ }),
+ new webpack.WatchIgnorePlugin([
+ /s?css\.d\.ts$/,
+ /less\.d\.ts$/
+ ])
+ ]
+ ]
+ }];
+}