summaryrefslogtreecommitdiff
path: root/webpack.config.site.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2021-03-31 19:41:58 +0200
committerJules Laplace <julescarbon@gmail.com>2021-03-31 19:41:58 +0200
commit87586f73fc5741070466d189dfab807a190753e5 (patch)
tree33fefbcb3478c8eb35896b7c08cde27c2ca0b1c9 /webpack.config.site.js
parentcda9c115283be8e4e224f6036ba07e5eca243289 (diff)
add potential to generate custom headers and custom pages
Diffstat (limited to 'webpack.config.site.js')
-rw-r--r--webpack.config.site.js124
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"],
+ },
+ },
+ ],
+ },
+ };
};