require("dotenv").config(); const webpack = require("webpack"); const path = require("path"); // const TerserPlugin = require("terser-webpack-plugin"); module.exports = function (env) { console.log("Building live site (development)"); 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' // }) ], // optimization: { // minimize: true, // minimizer: [ // new TerserPlugin({ // terserOptions: { // compress: { // // drop_console: true, // }, // }, // }), // ], // }, resolve: { alias: { // "react": "preact/compat", // "react-dom/test-utils": "preact/test-utils", // "react-dom": "preact/compat", }, }, 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"], }, }, ], }, }; };