2022-03-26 20:24:14 +08:00

53 lines
1.5 KiB
JavaScript

import { deepmerge } from '@fesjs/utils';
const defaultTerserOptions = {
compress: {
// turn off flags with small gains to speed up minification
arrows: false,
collapse_vars: false, // 0.3kb
comparisons: false,
computed_props: false,
hoist_funs: false,
hoist_props: false,
hoist_vars: false,
inline: false,
loops: false,
negate_iife: false,
properties: false,
reduce_funcs: false,
reduce_vars: false,
switches: false,
toplevel: false,
typeofs: false,
// a few flags with noticeable gains/speed ratio
// numbers based on out of the box vendor bundle
booleans: true, // 0.7kb
if_return: true, // 0.4kb
sequences: true, // 0.7kb
unused: true, // 2.3kb
// required features to drop conditional branches
conditionals: true,
dead_code: true,
evaluate: true,
},
mangle: {
safari10: true,
},
};
const terserOptions = (config) => ({
terserOptions: deepmerge(defaultTerserOptions, config.terserOptions || {}),
extractComments: false,
});
export default function createMinimizerWebpackConfig({ isProd, config, webpackConfig }) {
if (isProd) {
webpackConfig.optimization.minimizer('terser').use(require.resolve('terser-webpack-plugin'), [terserOptions(config)]);
}
if (process.env.FES_ENV === 'test') {
webpackConfig.optimization.minimize(false);
}
}