mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-05 19:41:57 +08:00
53 lines
1.5 KiB
JavaScript
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);
|
|
}
|
|
}
|