在不弹出的情况下删除 Create React App 中的日志语句

jas*_*san 9 uglifyjs create-react-app

console.log()在开发应用程序时使用了很多语句(我的意思是LOTS)。在没有Create React App 的情况下"ejecting", 我究竟如何才能删除它们 我考虑过但不确定如何实现:

在我的 package.json 中:

 "build": "react-scripts build && uglifyjs --compress drop_console build/static/js/main.xxxxx.js  -o build/static/js/main.xxxxx.js
Run Code Online (Sandbox Code Playgroud)

但是,我究竟如何知道文件的hash后缀,main.js以便我可以调用此命令并使用相同的文件名保存输出 js 文件

Sim*_*son 12

将此添加到 index.js

if (process.env.NODE_ENV !== 'development') {
  console.log = () => {}
}
Run Code Online (Sandbox Code Playgroud)

请注意,这只会抑制消息,不会将它们从您部署的代码中剥离。

2020 年 11 月

不要对库模块执行此操作,它将禁用父项目的 console.log。

2020 年 9 月更新

在 CRA 回购上有一些关于这个问题的动向......在这里提供支持/大拇指https://github.com/facebook/create-react-app/pull/9222

参考资料: 如何快速方便地禁用我的代码中的所有 console.log 语句?

  • 如果为您的网络应用程序留下日志消息有任何安全隐患,那么显然您应该在构建过程中删除日志。我个人使用 https://github.com/arackaf/customize-cra 在 config-overrides.js 文件中使用 `addBabelPlugin('transform-remove-console')` 来执行此操作。 (3认同)

azi*_*ium 5

如果你只是想抑制日志输出,你可以包装console.log并使用它代替

const log = (...msgs) => {
  if (process.env.NODE_ENV === 'development') console.log(...msgs)
}
Run Code Online (Sandbox Code Playgroud)

您可以导入/导出它,但这听起来很痛苦。似乎是一件好事global

global.log = log

global.log('will only log in dev')
Run Code Online (Sandbox Code Playgroud)