const webpack = require("webpack"); const merge = require("webpack-merge"); const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); const common = require("./webpack.common"); module.exports = merge(common, { mode: "production", devtool: "none", output: { filename: "[name].[contenthash].min.js", chunkFilename: "[id].[name].[contenthash].min.js", publicPath: "/dist/", }, module: { rules: [ { test: /\.(sa|sc|c)ss$/, use: [ "style-loader", MiniCssExtractPlugin.loader, "css-loader", "postcss-loader", "sass-loader", ], }, ], }, plugins: [ // new webpack.optimize.LimitChunkCountPlugin({ // maxChunks: 1, // }), new MiniCssExtractPlugin({ filename: "[name].[contenthash].min.css", chunkFilename: "[name].[contenthash].min.css", sourceMap: true, }), new webpack.HashedModuleIdsPlugin(), ], optimization: { minimizer: [new UglifyJsPlugin(), new OptimizeCssAssetsPlugin()], // runtimeChunk: "single", // splitChunks: { // chunks: "all", // cacheGroups: { // vendor: { // test: /[\\/]node_modules[\\/]/, // name(module) { // // get the name. E.g. node_modules/packageName/not/this/part.js // // or node_modules/packageName // const packageName = module.context.match( // /[\\/]node_modules[\\/](.*?)([\\/]|$)/ // )[1]; // // npm package names are URL-safe, but some servers don't like @ symbols // return `vendor.${packageName.replace("@", "")}`; // }, // }, // }, // }, }, });