通过npm包 terser-webpack-plugin 来实现
第一步:安装
npm install -D terser-webpack-plugin@4.2.3
第二步:配置 (vue.config.js)
const TerserPlugin = require('terser-webpack-plugin') module.export = {
chainWebpack (config) { config.optimization.minimizer([new TerserPlugin({ terserOptions: { mangle: true, // 混淆,默认也是开的,mangle也是可以配置很多选项的,具体看后面的链接 compress: { drop_console: true,//传true就是干掉所有的console.*这些函数的调用. drop_debugger: true, //干掉那些debugger; pure_funcs: ['console.log'] // 如果你要干掉特定的函数比如console.info ,又想删掉后保留其参数中的副作用,那用pure_funcs来处理 } } })])},
}
以上为正确的配置。vue/cli版本是3.9.0.
配置经过:
报错1
TypeError: Cannot read property 'javascript' of undefined at E:\work\package\20集成测试\IdeologicalEducationNew\node_modules\terser-webpack-plugin\dist\
参考
stackoverflow.com/questions/6…
Hi you are using Webpack 4 and Terser ^5.0.0. This version of Terser is for Webpack 5, you need to set version "terser-webpack-plugin": "^4.2.3", in package.json file
这是因为最初插件版本不对,terser-webpack-plugin@5.2.4是vue/cli4对应webpack5的。所以将版本降级解决。
报错2
做如下配置时
configureWebpack: (config) => { // 添加如下代码 if (process.env.NODE_ENV === 'production') { config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true }},
会报options不是一个function,问题点出在 没有在vue.config.js里引插件,下面这句代码没加
const TerserPlugin = require('terser-webpack-plugin')
即使上面报错解决依然有问题,就是代码里已有configureWebpack这个配置且是对象,改造为函数会报其他错,所以放弃此种方案。
另外还有其他方法。