Babel.js 是否删除react生产版本中的控制台日志语句?

b0zn9rqh  于 2022-12-08  发布在  Babel
关注(0)|答案(3)|浏览(173)

我有一个基本的react应用程序(使用create react app创建)
我已经通过了一些相关的链接,如Babel插件安装**npm i Babel插件转换删除控制台保存 * Guide to remove console log using babel plugin

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

我已经把上面的配置包含到了babel.rc文件中,但是它仍然没有解决我的问题。我可以在生产版本中看到日志。请让我知道我哪里出错了。

qzwqbdag

qzwqbdag1#

您可以在应用的根组件src/App.js中尝试以下操作:

if (process.env.NODE_ENV === "production")
  console.log = function no_console() {};

就在return之前。
编辑:感谢@Youngmu Yang的更正。这很奇怪,但在我的情况下是我之前输入的.env,完整的答案应该是:

if (process.env['The_env_of_your_project_that_defines_environment'] === "production")
  console.log = function no_console() {};
lhcgjxsq

lhcgjxsq2#

您可以尝试使用这些软件包覆盖配置:

注意:根据react-app-rewired文档,这将打破CRA提供的“保证”。因此,在使用它之前,您应该小心。

npm i -D customize-cra react-app-rewired babel-plugin-transform-remove-console

修改package.json,将react-scripts替换为react-app-rewiredreject除外)。完成后,脚本应如下所示:

"scripts": {
 "start": "react-app-rewired start",
 "build": "react-app-rewired build",
 "test": "react-app-rewired test",
 "eject": "react-scripts eject"
}

然后创建一个文件:
第一次
最后,运行npm run build后,将删除所有console.log
此外,我有另一个关于这个类似的question的答案,你也可以看看其他答案。

ffscu2ro

ffscu2ro3#

@pmiranda的解决方案应更改为:

if (process.env.NODE_ENV === "production")
    console.log = function no_console() {};

相关问题