supprimer de la console.logs avec Webpack & Uglify
j'essaie d'enlever la console.logs avec le plugin Uglify de Webpack mais il semble que le plugin Uglify qui est livré avec Webpack n'a pas cette option, il n'est pas mentionné dans la documentation.
j'initialise uglify à partir de webpack comme ceci:new webpack.optimize.UglifyJsPlugin()
je comprends que je peux utiliser Standalone Uglify lib pour obtenir toutes les options, mais je ne sais pas lequel?
Le problème est que drop_console
ne fonctionne pas.
6 réponses
UglifyJsPlugin
nous pouvons gérer les commentaires, les avertissements, les journaux de la console mais ce ne sera pas une bonne idée de supprimer tout cela en mode développement. Vérifiez d'abord si vous exécutez webpack
prov env or dev env
, si elle est prod env
ensuite, vous pouvez supprimer tous ces, comme ceci:
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
},
})
]
: []
référence:https://github.com/mishoo/UglifyJS2#compressor-options
plugins: [
new Webpack.optimize.UglifyJsPlugin({
compress: {
drop_console: true,
}
}
]
mise à Jour: pour webpack v4 il a changé un peu:
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
...
optimization: {
minimizer: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
drop_console: true,
}
}
})
]
}
Voici la nouvelle syntaxe pour Webpack v4:
optimization: {
minimizer: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
drop_console: true
},
output: {
comments: false
}
},
}),
],
},
Pour uglifyjs-webpack-plugin, les options d'habillage intérieur d'un uglifyOptions objet:
plugins: [
new UglifyJSPlugin({
uglifyOptions: {
compress: {
drop_console: true
}
}
})
]
j'ai ajouté une réponse complète pour webpack v4 avec la configuration de débogage
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
},
}
})
]
: []
}
Mes scripts dans le paquet.json sont comme suit:
"webpackDev": "npm run clean && export NODE_ENV=development && npx webpack",
"webpackProd": "npm run clean && export NODE_ENV=production && npx webpack -p"
c'est ce que j'ai fait pour supprimer alert() et console.journal (le) de mes codes. global_defs = > remplacer les alertes par une console.journal puis drop_console supprime toute la console.les journaux et maintenant rien ne s'affiche dans mon navigateur de la console
new UglifyJsPlugin({
uglifyOptions: {
compress: {
global_defs: {
"@alert": "console.log",
},
drop_console: true
}
}
}),
plugin versions:
"webpack":3.12.0, "webpack-cli": "^3.0.3", "uglifyjs-webpack-plugin": "^1.2.5",
en ce moment uglifyjs-webpack-plugin v1.2.6 a été publié et j'ai utilisé les dernières documentations pour celui-ci, donc je suppose qu'il n'y aura pas de problème avec le dernier plugin aussi.