我有一个基本的React应用(使用 create react app 创建)
我浏览了一些相关的链接,例如babel插件安装
npm i babel-plugin-transform-remove-console-保存
Guide to remove console log using babel plugin
{
"env": {
"production": {
"plugins": ["transform-remove-console"]
}
}
}
我已经将上述配置包含到babel.rc文件中,但是仍然不能解决我的问题。我可以在生产版本中看到日志。请让我知道我要去哪里了。
答案 0 :(得分:1)
您可以在src/App.js
中尝试应用的根组件:
if (process.env.REACT_APP_STAGE === 'PROD')
console.log = function no_console() {};
就在return
之前。
答案 1 :(得分:0)
您可以尝试使用这些包来覆盖配置:
注意:从 react-app-rewired 的文档来看,这会破坏 CRA 提供的“保证”。所以使用前要小心。
npm i -D customize-cra react-app-rewired babel-plugin-transform-remove-console
修改您的 package.json,将 react-scripts
替换为 react-app-rewired
,除了 reject
。完成后,您的脚本应如下所示:
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
}
然后创建一个文件:
touch config-overrides.js
// config-overrides.js
const { override, addBabelPlugins } = require('customize-cra')
module.exports = override(
addBabelPlugins(
"transform-remove-console"
)
)
最后,运行 npm run build
后,所有 console.log
将被删除。
另外,关于这个类似的question,我还有另一个答案,你也可以查看其他答案。
答案 2 :(得分:-1)
通常在代码中保留console.log
并不是一个好主意,但是如果您想将它们保留在代码中,则必须采用以下可能的方法:
const myConsoleLog = dataToLog => {
if(process.env.NODE_ENV === 'development') {
console.log(text)
}
}