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.

27
demandé sur danwellman 2016-12-08 16:06:43

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 webpackprov 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

43
répondu Mayank Shukla 2018-03-05 15:31:36

drop_console:

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,
        }
      }
    })
  ]
}
30
répondu Dominic 2018-03-05 15:32:51

Voici la nouvelle syntaxe pour Webpack v4:

optimization: {
  minimizer: [
    new UglifyJSPlugin({
      uglifyOptions: {
        compress: {
          drop_console: true
        },
        output: {
          comments: false
        }
      },
    }),
  ],
},
7
répondu jesal 2018-02-28 19:08:59

Pour uglifyjs-webpack-plugin, les options d'habillage intérieur d'un uglifyOptions objet:

    plugins: [
    new UglifyJSPlugin({
        uglifyOptions: {
            compress: {
                drop_console: true
            }
        }
    })
]
6
répondu jhillers 2017-11-13 15:10:52

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"
2
répondu jarora 2018-03-08 13:11:07

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.

2
répondu molikh 2018-06-21 06:14:56