2016-12-02 54 views
2

工作,我有以下的配置,但它仍然不會刪除的console.log語句:uglifyjs drop_console/pure_funcs不在的WebPack

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

您使用的是哪個版本的webpack? –

+0

版本1.14.0。 –

回答

1

您可能收到的消息是調試控制檯中的消息,而不是console.log。我有一個類似的問題,我認爲使用drop_console就足夠了。我不得不添加drop_debugger,所以給你的例子,這應該刪除所有的控制檯輸出。

new webpack.optimize.UglifyJsPlugin({ 
    compress: { 
    warnings: false, 
    drop_console: true, 
    drop_debugger: true 
    }, 
    comments: false 
}) 
0

我有同樣的問題,drop_console在我的反應腳本設置不工作(在Windows 10,陣營腳本版本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 

然後在node_modules\react-scripts\config編輯webpack.config.prod.js(不噴吐反應):

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語句。

我無法解釋這種行爲,但至少它有效(雖然有點神奇)。

1

這不是我的情況下uglifyjs的原因。它是由babel-loader引起的,它會將console.log轉換爲(e = console).log

我不知道如何解決它。最後,我必須使用名爲babel-plugin-transform-remove-console的babel插件來移除控制檯。

但是我確實想使用UglifyJsPlugin。

這是對那些可以找出決議的人的提示。

+0

事實證明,webpack在這裏並不是非常可靠,而你使用babel-plugin-transform-remove-console的解決方案要好得多。 – Konstantin