const Webpack = require("webpack"); const { merge } = require("webpack-merge"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const common = require("./webpack.common.js"); module.exports = merge(common, { mode: "production", bail: true, output: { filename: "js/[name].[chunkhash:8].js", chunkFilename: "js/[name].[chunkhash:8].chunk.js", }, plugins: [ new Webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("production"), }), new MiniCssExtractPlugin({ filename: "css/[name].[contenthash].css", chunkFilename: "css/[id].[contenthash].css", }), ], optimization: { minimize: true, minimizer: [new TerserPlugin()], }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: "babel-loader", }, { test: /\.s?css/i, use: [ MiniCssExtractPlugin.loader, "css-loader", "postcss-loader", "sass-loader", ], }, ], } });