从生产模式删除日志不起作用-本机响应

时间:2019-11-05 02:34:54

标签: react-native

反应本机文档指出 “您还可以使用此babel插件删除所有控制台。*调用。您需要先使用npm i babel-plugin-transform-remove-console --save-dev安装它,然后在您的目录下编辑.babelrc文件。这样的项目目录”

{
  "env": {
    "production": {
      "plugins": ["transform-remove-console"]
    }
  }
}

我没有找到.babelrc文件。因此,我在babel.config.js文件中进行了以下更改。

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  env: {
    production: {
      plugins: ["transform-remove-console"]
    }
  }
};

但是它对我不起作用。当我在android studio中测试过日志后,便会显示日志。这里出了什么问题?预先感谢。

3 个答案:

答案 0 :(得分:1)

记录的方法对我现有的项目也不起作用,但是在新的测试项目中起作用。我尝试了许多依赖项升级,添加/删除了dep,插件等,试图找出问题的根源,但是没有运气。所以最后我采用了这种解决方法:

    module.exports = {
      plugins: ['@babel/plugin-proposal-numeric-separator', 'lodash'].concat(
        process.env.NODE_ENV === 'production' ? ['transform-remove-console'] : []
      ),
      presets: [
        'module:metro-react-native-babel-preset',
        ['@babel/env', { targets: { node: 6 } }]
      ]
    };

答案 1 :(得分:1)

这应该有效(推荐方法

const presets = ['module:metro-react-native-babel-preset'];
const plugins = ['module:react-native-dotenv'];

if (process.env.ENV === 'prod') {
  plugins.push('transform-remove-console');
}

module.exports = {presets, plugins};

或者如果你不想为此使用任何包,你可以这样做。 把它放在index.js

if(!__DEV__){
   console.log = () => {}
}

答案 2 :(得分:0)

如果您的项目中不存在.babelrc文件,那么您也可以手动创建一个新的.babelrc文件,并按以下方式进行设置。

{
  "presets": ["react-native"],
  "env": {
    "production": {
    "plugins": ["transform-remove-console"]
    }
  }
}

来源:-

https://babeljs.io/docs/en/configuration#babelrc

https://facebook.github.io/react-native/docs/performance#using-consolelog-statements