我正在试着删除console.logs
Webpack的Uglify插件,但似乎与Webpack捆绑在一起的Uglify插件没有这个选项,文档中没有提到这一点。
我在webpack中初始化uglify,如下所示:
new webpack.optimize.UglifyJsPlugin()
我的理解是我可以使用独立的Uglify lib来获得所有的选项,但我不知道是哪一个?
问题是drop_console
不起作用。
发布于 2016-12-08 22:15:12
使用UglifyJsPlugin
我们可以处理注释、警告、控制台日志
但在开发模式下删除所有这些并不是一个好主意。首先检查您是否正在运行webpack
对于prod env or dev env
,如果是prod env
然后,您可以删除所有这些,如下所示:
var debug = process.env.NODE_ENV !== "production";
plugins: !debug ? [
new webpack.optimize.UglifyJsPlugin({
// Eliminate comments
comments: false,
// Compression specific options
compress: {
// remove warnings
warnings: false,
// Drop console statements
drop_console: true
},
})
]
: []
参考资料:https://github.com/mishoo/UglifyJS2#compressor-options
更新2019现在需要在webpack v4中使用terser插件来支持ES6https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
webpack.config.js
module.exports = {
optimization: {
minimizer: [
new TerserPlugin({
sourceMap: true, // Must be set to true if using source-maps in production
terserOptions: {
compress: {
drop_console: true,
},
},
}),
],
},
};
发布于 2016-12-08 21:56:55
plugins: [
new Webpack.optimize.UglifyJsPlugin({
compress: {
drop_console: true,
}
}
]
更新:对于webpackv4它有一点变化:
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
...
optimization: {
minimizer: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
drop_console: true,
}
}
})
]
}
我个人认为控制台日志(特别是console.error
)在prod上非常有用,并认为保留它们是一个好主意。如果您真的想删除特定的控制台功能,例如console.log
你应该使用pure_funcs
选项例如pure_funcs: ['console.log']
这将会下降console.log
由于纯函数不会产生副作用,因此Uglify可以丢弃这些副作用未分配任何事。
optimization: {
minimizer: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
// Drop only console.logs but leave others
pure_funcs: ['console.log'],
},
mangle: {
// Note: I'm not certain this is needed.
reserved: ['console.log']
}
}
})
]
}
对于TerserJS
(Uglify已弃用,不支持新的JS功能,您不应该使用它)
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
drop_console: true
}
}
})
]
}
如前所述,您还可以使用pure_funcs
或者。
发布于 2018-03-01 03:09:00
这是Webpack v4的新语法:
optimization: {
minimizer: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
drop_console: true
},
output: {
comments: false
}
},
}),
],
},
https://stackoverflow.com/questions/41040266
复制相似问题