WebpackのUglifyプラグインでconsole.logsを削除しようとしていますが、WebpackにバンドルされているUglifyプラグインにはそのオプションがなく、ドキュメントには記載されていません。
次のようにwebpackからuglifyを初期化しています:new webpack.optimize.UglifyJsPlugin()
私の理解では、スタンドアロンのUglify libを使用してすべてのオプションを取得できますが、どれがわからないのですか?
問題は、drop_console
が機能していないことです。
UglifyJsPlugin
を使用すると、コメント、警告、コンソールログを処理できますが、開発モードでこれらすべてを削除することはお勧めできません。最初にprov env or dev env
に対してwebpack
を実行しているかどうかを確認し、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
UPDATE 2019webpack v4でES6をサポートするには、terserプラグインを使用する必要があります https://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,
},
},
}),
],
},
};
drop_console を試してください:
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,
}
}
})
]
}
これは、Webpack v4の新しい構文です。
optimization: {
minimizer: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
drop_console: true
},
output: {
comments: false
}
},
}),
],
},
Uglifyjs-webpack-pluginの場合、オプションをuglifyOptionsオブジェクト内にラップします。
plugins: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
drop_console: true
}
}
})
]
これは、コードからalert()とconsole.log()を削除するために行ったことです。 global_defs => console.logでアラートを置き換え、drop_consoleはすべてのconsole.logsを削除し、ブラウザーコンソールに何も表示されなくなりました
new UglifyJsPlugin({
uglifyOptions: {
compress: {
global_defs: {
"@alert": "console.log",
},
drop_console: true
}
}
}),
プラグインのバージョン:
"webpack":3.12.0, "webpack-cli": "^3.0.3", "uglifyjs-webpack-plugin": "^1.2.5",
現在、uglifyjs-webpack-plugin v1.2.6がリリースされており、このドキュメントには最新のドキュメントを使用しているため、最新のプラグインでも問題はないと思われます。
デバッグ構成でwebpack v4の包括的な回答を追加しました
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
var debug = process.env.NODE_ENV !== "production";
.....
optimization: {
minimizer: !debug ? [
new UglifyJsPlugin({
// Compression specific options
uglifyOptions: {
// Eliminate comments
comments: false,
compress: {
// remove warnings
warnings: false,
// Drop console statements
drop_console: true
},
}
})
]
: []
}
Package.jsonのスクリプトは次のようになります。
"webpackDev": "npm run clean && export NODE_ENV=development && npx webpack",
"webpackProd": "npm run clean && export NODE_ENV=production && npx webpack -p"