console.debug()是否会影响发布模式下的本机性能

时间:2017-03-18 23:22:25

标签: reactjs react-native console.log

我知道console.log()会影响本机在发布模式下的优先级,这在文档中非常明确,但是console.debug()和console.warn()呢?

否则,什么是打印调试信息的最佳方式,而不是每次我们发布时都不必将它们全部删除?因为我们将再次以开发模式需要这些消息。

2 个答案:

答案 0 :(得分:2)

如果您查看文档,则有一些说明如何使用babel插件自动删除发布版本中的所有控制台。*调用。

根据它[1],你只需要安装插件: 1)

from ('/path') {
    filter { String line -> line.replaceAll("foo", "bar") }
}

2)在.babelrc文件中添加:

npm i babel-plugin-transform-remove-console --save

1 - https://facebook.github.io/react-native/docs/performance.html#using-console-log-statements

答案 1 :(得分:0)

有一些webpack插件用于删除特定类型的控制台语句,具体取决于您如何配置它们,以便您可以,例如,仅删除console.debug语句,但上次我尝试时,我没有好运。

如果您正在使用最新版本的React构建React JS应用程序,例如使用create-react-app创建的15.x,并使用npm run eject将其弹出,则您将有两个单独的webpack配置。您可以通过修改/config/webpack.config.prod.js部分中的现有UglifyJsPlugin配置来修改生产配置(plugins)并从生产版本中删除所有控制台语句,以便它看起来像这样:

new webpack.optimize.UglifyJsPlugin({
  compress: {
    warnings: false,
    // Disabled because of an issue with Uglify breaking seemingly valid code:
    // https://github.com/facebookincubator/create-react-app/issues/2376
    // Pending further investigation:
    // https://github.com/mishoo/UglifyJS2/issues/2011
    comparisons: false,

    // Drop console statements
    drop_console: true,          // <--- ADD THIS
  },
  output: {
    comments: false,
  },
  sourceMap: true,
}),

这就是你应该做的所有......但是,这将删除所有控制台语句,而不仅仅是console.debug