我试图从我的本机应用程序的输出中删除console.log输出,但是当我运行
ENVFILE = .env.production react-native run-android --variant = release
和
adb logcat
我仍然看到我的应用程序数据已记录到控制台。
我使用了以下文档:https://facebook.github.io/react-native/docs/performance.html#using-consolelog-statements。
这是我的.babelrc文件:
{
"presets": ["react-native"],
"env": {
"production": {
"plugins": ["transform-remove-console"]
}
}
}
我想念什么? 我对本机0.60.3 并使用“ babel-plugin-transform-remove-console”:“ ^ 6.9.4”,
答案 0 :(得分:1)
使用babel.config.js
代替.babelrc
,看来process.env.BABEL_ENV
用于确定是否包括在env.production
下列出的配置。但是,在构建过程中,process.env.BABEL_ENV
被设置为undefined
。
要解决此问题,我将根据process.env.BABEL_ENV
或process.env.NODE_ENV
是否指示生产版本返回一个不同的对象。
YMMV。
module.exports = function(api) {
api.cache(true); // necessary
if (process.env.NODE_ENV === 'production' || process.env.BABEL_ENV === 'production') {
return {
"presets": ["module:metro-react-native-babel-preset"],
"plugins": ["react-native-paper/babel", "transform-remove-console"]
}
} else {
return {
"presets": ["module:metro-react-native-babel-preset"],
}
}
}
答案 1 :(得分:0)
我有"@babel/core": "^7.5.5"
和"react-native": "^0.60.5"
React Native Documentation中描述的方法不适用于我。
经过多次尝试和错误并在GitHub上探讨了问题后,我开始使用它了:
在 babel.config.js 中添加此内容-
module.exports = api => {
const babelEnv = api.env();
const plugins = [];
//change to 'production' to check if this is working in 'development' mode
if (babelEnv !== 'development') {
plugins.push(['transform-remove-console', {exclude: ['error', 'warn']}]);
}
return {
presets: ['module:metro-react-native-babel-preset'],
plugins,
};
};
要查看使用
运行的更改npm start -- --reset-cache
更多信息,请参见