我有以下配置,但它仍然没有删除console.log语句:
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
pure_funcs: [ 'console.log' ],
drop_console : true,
comments: false
},
pure_funcs: [ 'console.log' ],
drop_console : true,
comments: false
})
我做错了什么?
答案 0 :(得分:2)
您获得的消息可能是在控制台中调试消息,而不是console.log。我有一个类似的问题,我认为使用drop_console就足够了。我不得不添加drop_debugger,所以给出你的例子,这应该删除所有控制台输出。
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
drop_console: true,
drop_debugger: true
},
comments: false
})
答案 1 :(得分:1)
在我的情况下,这不是uglifyjs的原因。它是由babel-loader引起的,它会将console.log
转换为(e = console).log
。
我现在不知道如何修复它。最后,我必须使用名为babel-plugin-transform-remove-console
的babel插件来删除控制台。
但我确实想使用UglifyJsPlugin。
这是对能够找到解决方案的人的暗示。
答案 2 :(得分:0)
我遇到了同样的问题drop_console
无法在我的反应脚本设置中工作(在Windows 10上,React-script版本0.8.5)。
尝试重现此问题我创建了一个全新的应用,在App.js中添加了console.log
,在webpack.config.prod.js中添加了drop_console: true
。但是,在这个简单的设置中,drop_console
可以正常工作,并且console.log
已被删除。
由于它仍然无法在我的真实应用中运行,因此我安装了strip-loader
:
npm install --save-dev strip-loader
然后在webpack.config.prod.js
中编辑了node_modules\react-scripts\config
(没有退出反应):
var WebpackStrip = require('strip-loader'); // around line 20
...
// inserted in module/loaders between babel and style loaders, around line 168
{
test: /\.js$/,
loader: WebpackStrip.loader('debug', 'console.log')
},
果然,所有console.log
语句都被删除了(npm run build
)。然后,我从配置中删除了所有更改,console.log
仍然被删除。我卸载了strip-loader
,构建仍然成功删除了console.log
个语句。
我无法解释这种行为,但至少它有效(尽管有些神奇)。