import dotenv from "dotenv"; dotenv.config(); // const CleanWebpackPlugin = require('clean-webpack-plugin') import webpack from "webpack"; import path from "path"; import TerserPlugin from "terser-webpack-plugin"; // const CleanWebpackPlugin = require('clean-webpack-plugin') // const Visualizer = require('webpack-visualizer-plugin'); export default { mode: "production", entry: { main: "./src/index.js", }, output: { path: path.resolve(__dirname, "public/assets/js"), 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 || ""), }), 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", // 'vcat-header': path.resolve(__dirname, '../app/components/common/header.component.js'), // 'vcat-auth-reducer': path.resolve(__dirname, '../app/reducers/auth.reducer.js'), }, }, 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"], }, }, ], }, };