反应本机文档指出 “您还可以使用此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中测试过日志后,便会显示日志。这里出了什么问题?预先感谢。
答案 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