UNPKG

1.22 kBJavaScriptView Raw
1const TerserPlugin = require('terser-webpack-plugin');
2const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
3const splitChunks = require('./splitChunks');
4const uglifyOptions = require('./uglify');
5
6function getSSROptimizationConfig() {
7 // ssr does not need any kind of optimization
8 return {
9 minimize: false,
10 noEmitOnErrors: true,
11 mangleWasmImports: false,
12 splitChunks: false,
13 };
14}
15
16function getOptimizationConfig(config = {}) {
17 if (config.isSSR) {
18 return getSSROptimizationConfig();
19 }
20
21 const optimization = {
22 minimize: config.minify || false,
23 minimizer: [
24 // use terser instead of uglify js for better es6 support
25 new TerserPlugin(uglifyOptions(config)),
26
27 // css minify
28 new OptimizeCSSAssetsPlugin({
29 cssProcessorOptions: {
30 discardComments: {
31 removeAll: true,
32 },
33 },
34 canPrint: true,
35 }),
36 ],
37 noEmitOnErrors: true,
38 mangleWasmImports: config.minify || false,
39 nodeEnv: 'development',
40 };
41
42 if (config.isProduction) {
43 Object.assign(optimization, {
44 runtimeChunk: 'single',
45 noEmitOnErrors: false,
46 nodeEnv: 'production',
47 splitChunks,
48 });
49 }
50
51 return optimization;
52}
53
54module.exports = {
55 getOptimizationConfig,
56};