首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Webpack和Uglify删除console.logs

使用Webpack和Uglify删除console.logs
EN

Stack Overflow用户
提问于 2016-12-08 21:06:44
回答 9查看 75.8K关注 0票数 62

我正在试着删除console.logsWebpack的Uglify插件,但似乎与Webpack捆绑在一起的Uglify插件没有这个选项,文档中没有提到这一点。

我在webpack中初始化uglify,如下所示:

代码语言:js
复制
new webpack.optimize.UglifyJsPlugin()

我的理解是我可以使用独立的Uglify lib来获得所有的选项,但我不知道是哪一个?

问题是drop_console不起作用。

EN

回答 9

Stack Overflow用户

发布于 2016-12-08 22:15:12

使用UglifyJsPlugin我们可以处理注释、警告、控制台日志

但在开发模式下删除所有这些并不是一个好主意。首先检查您是否正在运行webpack对于prod env or dev env,如果是prod env然后,您可以删除所有这些,如下所示:

代码语言:javascript
复制
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

更新2019现在需要在webpack v4中使用terser插件来支持ES6https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions

webpack.config.js

代码语言:javascript
复制
module.exports = {
  optimization: {
    minimizer: [
      new TerserPlugin({
        sourceMap: true, // Must be set to true if using source-maps in production
        terserOptions: {
          compress: {
            drop_console: true,
          },
        },
      }),
    ],
  },
};
票数 88
EN

Stack Overflow用户

发布于 2016-12-08 21:56:55

尝试drop\_console

代码语言:javascript
复制
plugins: [
    new Webpack.optimize.UglifyJsPlugin({
      compress: {
        drop_console: true,
      }
    }
]

更新:对于webpackv4它有一点变化:

代码语言:javascript
复制
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');

...

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

我个人认为控制台日志(特别是console.error)在prod上非常有用,并认为保留它们是一个好主意。如果您真的想删除特定的控制台功能,例如console.log你应该使用pure_funcs选项例如pure_funcs: ['console.log']这将会下降console.log由于纯函数不会产生副作用,因此Uglify可以丢弃这些副作用未分配任何事。

代码语言:javascript
复制
optimization: {
  minimizer: [
    new UglifyJSPlugin({
      uglifyOptions: {
        compress: {
          // Drop only console.logs but leave others
          pure_funcs: ['console.log'],
        },
        mangle: {
          // Note: I'm not certain this is needed.
          reserved: ['console.log']
        }
      }
    })
  ]
}

对于TerserJS

(Uglify已弃用,不支持新的JS功能,您不应该使用它)

代码语言:javascript
复制
optimization: {
  minimizer: [
    new TerserPlugin({
      terserOptions: {
        compress: {
            drop_console: true
        }
      }
    })
  ]
}

如前所述,您还可以使用pure_funcs或者。

票数 57
EN

Stack Overflow用户

发布于 2018-03-01 03:09:00

这是Webpack v4的新语法:

代码语言:javascript
复制
optimization: {
  minimizer: [
    new UglifyJSPlugin({
      uglifyOptions: {
        compress: {
          drop_console: true
        },
        output: {
          comments: false
        }
      },
    }),
  ],
},
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41040266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档