require('dotenv').config() 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, } } })], }, resolve: { alias: { "app/store": "site/store", "app/actions": "site/actions", // "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", [ "@babel/plugin-proposal-class-properties", { "loose": true } ], "transform-async-to-generator", ["module-resolver", { "root": ["./frontend"], "alias": { "app/store": "./frontend/site/store", "app/actions": "./frontend/site/actions", } }] ] } } ] }, };