版本@vue\cli 4.3.1
蛹尝,默認(rèn)設(shè)置下打包到production
環(huán)境下,發(fā)現(xiàn)打包后的js
文件內(nèi)的所有console.*()
方法還在里面歧寺,這個本該是默認(rèn)移除的翅雏。
首先我打開了vue ui
,打開inspect
檢查webpack
配置梳码,發(fā)現(xiàn)當(dāng)前的minimizer
已經(jīng)不再是UglifyJS
了隐圾,換成了Terser
,它是webpack v4
的默認(rèn)壓縮工具掰茶,也是當(dāng)前性能最好的暇藏。
現(xiàn)在打開inspect
輸出的默認(rèn)配置項,找到minimizer
配置:
//......
minimizer: [
/* config.optimization.minimizer('terser') */
new TerserPlugin(
{
terserOptions: {
compress: {
arrows: false,
collapse_vars: false,
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,
booleans: true,
if_return: true,
sequences: true,
unused: true,
conditionals: true,
dead_code: true,
evaluate: true
},
//......
},
//......
}
)
]
//......
compress
內(nèi)部的設(shè)置就是壓縮配置項濒蒋,打開該插件的文檔盐碱,與console.*()
相關(guān)的配置項為drop_console
把兔,該配置默認(rèn)是false
,現(xiàn)在只要打開它就好了瓮顽。
查看了vue/cli
的配置文檔县好,發(fā)現(xiàn)需要在項目的vue.config.js
文件內(nèi)進(jìn)行配置的更改,具體代碼如下:
//......
// 寫法一
configureWebpack: (config) => {
// 判斷為生產(chǎn)模式下暖混,因為開發(fā)模式我們是想保存console的
if (process.env.NODE_ENV === "production") {
config.optimization.minimizer.map((arg) => {
const option = arg.options.terserOptions.compress;
option.drop_console = true; // 打開開關(guān)
return arg;
});
}
},
// 寫法2
chainWebpack: (config) => {
if (process.env.NODE_ENV === "production") {
config.optimization.minimizer("terser").tap((arg) => {
arg[0].terserOptions.compress.drop_console = true;
return arg;
});
}
}
//......
進(jìn)行生產(chǎn)模式打包驗證缕贡,發(fā)現(xiàn)達(dá)到效果。