process.env.NODE_ENV = 'production'; const {merge} = require('webpack-merge'); const common = require('./webpack.common.js'); //const CompressionPlugin = require("compression-webpack-plugin"); //const TerserJSPlugin = require('terser-webpack-plugin'); //const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); module.exports = merge(common, { mode: 'production', devtool: 'source-map', optimization: { //minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})], //runtimeChunk: 'single', splitChunks: { chunks: 'all', maxInitialRequests: Infinity, //minSize: 0, 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 `npm.${packageName.replace('@', '')}`; }, }, }, } }, plugins: [ /* new CompressionPlugin({ filename: '[path].gz[query]', algorithm: 'gzip', test: /\.(js|css|html|svg)$/, threshold: 10240, minRatio: 0.8, }), */ /* new CompressionPlugin({ filename: '[path].br[query]', algorithm: 'brotliCompress', test: /\.(js|css|html|svg)$/, compressionOptions: { level: 11 }, threshold: 10240, minRatio: 0.8, deleteOriginalAssets: false, }), */ ] });