2016-12-08 3 views
20

J'essaie de supprimer console.logs avec le plugin Uglify de Webpack mais il semble que le plugin Uglify fourni avec Webpack n'a pas cette option, ce n'est pas mentionné dans la documentation.supprimer console.logs avec Webpack & Uglify

Je enlaidir de webpack Initialisation comme ceci: new webpack.optimize.UglifyJsPlugin()

Ma compréhension est que je peux utiliser enlaidir autonome lib pour obtenir toutes les options, mais je ne sais pas lequel? Le problème est drop_console ne fonctionne pas.

Répondre

15

Essayez drop_console:

plugins: [ 
    new Webpack.optimize.UglifyJsPlugin({ 
     compress: { 
     drop_console: true, 
     } 
    } 
] 

Mise à jour: Pour webpack v4 il a un peu changé:

const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); 

... 

optimization: { 
    minimizer: [ 
    new UglifyJSPlugin({ 
     uglifyOptions: { 
     compress: { 
      drop_console: true, 
     } 
     } 
    }) 
    ] 
} 
+1

qui est exactement ce que je l'ai essayé mais il n'a pas faire n'importe quoi. Je peux voir qu'il corrige le code mais il ne supprime pas les journaux de la console. –

+0

Je suis en train d'essayer de faire le contraire, et malheureusement la mise 'drop_console: false' ne m'a pas aidé. – Ryan

+0

Je viens de l'essayer et cela a fonctionné parfaitement –

36

Avec UglifyJsPlugin nous pouvons gérer 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 utilisez webpack pour prov env or dev env, si elle est prod env vous pouvez supprimer tout cela, 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

+0

J'utilise drop_console: true mais cela ne supprime pas les logs de la console. Tout d'abord, je pense que les webpacks uglify plugin ne sont pas disponibles avec ces options, car ils ne sont pas mentionnés sur les docks webpack officiels. Mais il semble que j'utilise un plugin uglify correct, juste drop_console ne fonctionne pas. voici ma config webpack: http://pastebin.com/tvymXfZ0 –

+0

Essayez ceci: http://hastebin.com/kunokasenu.js Ceci est ma config prod, j'ai aussi conf dev séparé. –

+0

J'utilise le même code, tout fonctionne bien quand je le construis avec webpack -p. –

3

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

plugins: [ 
    new UglifyJSPlugin({ 
     uglifyOptions: { 
      compress: { 
       drop_console: true 
      } 
     } 
    }) 
] 
2

Ceci est la nouvelle syntaxe pour Webpack v4:

optimization: { 
    minimizer: [ 
    new UglifyJSPlugin({ 
     uglifyOptions: { 
     compress: { 
      drop_console: true 
     }, 
     output: { 
      comments: false 
     } 
     }, 
    }), 
    ], 
}, 
0

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 package.json sont comme ceci:

"webpackDev": "npm run clean && export NODE_ENV=development && npx webpack", 
"webpackProd": "npm run clean && export NODE_ENV=production && npx webpack -p"