/* eslint-disable */ const webpack = require('webpack'); const { merge } = require('webpack-merge'); // Plugins const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const WebpackShellPluginNext = require('webpack-shell-plugin-next'); const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); const WebpackAssetsManifest = require('webpack-assets-manifest'); // Configs const baseConfig = require('./webpack.base.config'); const prodConfiguration = env => { return merge([ { optimization: { runtimeChunk: 'single', emitOnErrors: true, splitChunks: { cacheGroups: { vendor: { test: /[\\/]node_modules[\\/]/, name: 'vendors', chunks: 'all' } } }, minimize: false, minimizer: [ new TerserPlugin(), new CssMinimizerPlugin(), ], }, // devtool: 'cheap-module-source-map', plugins: [ new CleanWebpackPlugin(), // new webpack.EvalSourceMapDevToolPlugin({ // exclude: ['vendors.js'], // }), new WebpackManifestPlugin({ fileName: 'webpack-manifest.json' }), new WebpackAssetsManifest(), new MiniCssExtractPlugin(), new BundleAnalyzerPlugin({ analyzerMode: 'server', analyzerPort: 8181, generateStatsFile: true, statsFilename: 'statistics.html', logLevel: "info" }), new WebpackShellPluginNext({ onBuildStart:{ scripts: ['echo "===> Starting packing with WEBPACK 5"'], blocking: true, parallel: false }, onBuildEnd:{ scripts: ['cd server && nodemon index.js'], blocking: false, parallel: true } }) ], }, ]); } module.exports = env => { return merge(baseConfig(env), prodConfiguration(env)); }