diff options
Diffstat (limited to 'webpack.config.site.js')
| -rw-r--r-- | webpack.config.site.js | 124 |
1 files changed, 69 insertions, 55 deletions
diff --git a/webpack.config.site.js b/webpack.config.site.js index 80d84d2..16d35a3 100644 --- a/webpack.config.site.js +++ b/webpack.config.site.js @@ -4,64 +4,78 @@ const webpack = require("webpack"); const path = require("path"); const TerserPlugin = require("terser-webpack-plugin"); -module.exports = { - mode: "production", - entry: { - main: "./frontend/site/index.js", - }, - output: { - path: path.resolve(__dirname, "static/js/dist"), - filename: "bundle.js", - }, - plugins: [ - new webpack.DefinePlugin({ - "process.env.NODE_ENV": JSON.stringify("production"), - // 'process.env.S3_HOST': JSON.stringify(process.env.S3_HOST || ""), - // 'process.env.API_HOST': JSON.stringify(process.env.API_HOST || ""), - __REACT_DEVTOOLS_GLOBAL_HOOK__: "({ isDisabled: true })", - }), - new TerserPlugin(), - new webpack.optimize.AggressiveMergingPlugin(), - // new Visualizer({ - // filename: './statistics.html' - // }) - ], - optimization: { - minimize: true, - minimizer: [ - new TerserPlugin({ - terserOptions: { - compress: { - // drop_console: true, - }, - }, +module.exports = function (env) { + console.log("Building live site (production)"); + console.log(env); + const appTarget = (env && env.APP_TARGET) || "app"; + return { + mode: "production", + entry: { + main: "./frontend/site/index.js", + }, + output: { + path: path.resolve(__dirname, "static/js/dist"), + filename: "bundle.js", + }, + plugins: [ + new webpack.NormalModuleReplacementPlugin( + /(.*)APP_TARGET(\.*)/, + function (resource) { + resource.request = resource.request.replace( + /APP_TARGET/, + `${appTarget}` + ); + } + ), + new webpack.DefinePlugin({ + "process.env.NODE_ENV": JSON.stringify("production"), + // 'process.env.S3_HOST': JSON.stringify(process.env.S3_HOST || ""), + // 'process.env.API_HOST': JSON.stringify(process.env.API_HOST || ""), + __REACT_DEVTOOLS_GLOBAL_HOOK__: "({ isDisabled: true })", }), + new TerserPlugin(), + new webpack.optimize.AggressiveMergingPlugin(), + // new Visualizer({ + // filename: './statistics.html' + // }) ], - }, - resolve: { - alias: { - // "react": "preact/compat", - // "react-dom/test-utils": "preact/test-utils", - // "react-dom": "preact/compat", + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + terserOptions: { + compress: { + // drop_console: true, + }, + }, + }), + ], }, - }, - devtool: "cheap-module-source-map", - module: { - rules: [ - { - test: /\.css$/, - use: ["style-loader", "css-loader"], + resolve: { + alias: { + // "react": "preact/compat", + // "react-dom/test-utils": "preact/test-utils", + // "react-dom": "preact/compat", }, - { - test: /\.js$/, - // include: path.resolve(__dirname, 'client'), - exclude: /(node_modules|bower_components|build)/, - loader: "babel-loader", - options: { - presets: ["@babel/preset-react"], - plugins: ["@babel/plugin-transform-runtime"], + }, + devtool: "cheap-module-source-map", + module: { + rules: [ + { + test: /\.css$/, + use: ["style-loader", "css-loader"], }, - }, - ], - }, + { + test: /\.js$/, + // include: path.resolve(__dirname, 'client'), + exclude: /(node_modules|bower_components|build)/, + loader: "babel-loader", + options: { + presets: ["@babel/preset-react"], + plugins: ["@babel/plugin-transform-runtime"], + }, + }, + ], + }, + }; }; |
