javascript - 'process.env.NODE_ENV' 替换为字符串或进程对象,可在运行时在 create-react-app 中使用

标签 javascript reactjs webpack create-react-app

见过执行此类操作的代码,

if(process.env.NODE_ENV === 'development') {
        //some DEVELOPMENT mode operation 
 }

在类似的行中,process.env.NODE_ENV === '生产'。 现在,当我们在 create-react-app 脚手架应用程序上执行 npm run build 时,

  1. process.env.NODE_ENV 字符串被替换(并变为 if('development' === 'development'),哪种情况下死代码被删除?)或者,
  2. process 对象在运行时可用,当执行此代码时,该对象具有包含 NODE_ENV 属性的 env 对象。

了解这个过程很重要,因为已经看到人们写下像 getENV 这样返回该值的函数。如果发生#1,这无助于删除死代码。

最佳答案

进程 #1 就是发生的进程。一切工作都归功于 webpack DefinePlugin,它将 process.env“翻译”为正确的值。

现在,这里棘手的事情是:Webpack 在构建期间执行死代码消除(也称为 Tree shake),从而删除所有不需要的分支。

关于javascript - 'process.env.NODE_ENV' 替换为字符串或进程对象,可在运行时在 create-react-app 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637189/

相关文章:

javascript - Angular ui-router 无法解析 $resource 结果

javascript - jCarousel - 滚动丰富的最后一个元素后的第一个元素

javascript - Gatsby 在开发期间工作正常,但在构建期间抛出错误

javascript - 将 Webpack 添加到现有 Angular 应用程序

angularjs - 错误 : Unexpected value 'undefined' declared by the module 'DynamicTestModule'

reactjs - 跟踪 : The node type SpreadProperty has been renamed to SpreadElement at Object. isSpreadProperty

javascript - Google PlusOne 的这个功能有什么作用?

javascript - 使用javascript根据文本结果隐藏下拉框

javascript - 在 React 中改变 Prop

reactjs - 使用 `dynamic import` 从另一台主机获取脚本?