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

'process.env.NODE_ENV' replaced as a string or process object is available at runtime in create-react-app

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

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

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

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

知道这个过程很重要,因为见过有人写下像getENV这样的函数,其中returns这个值。如果 #1 发生,这无助于删除死代码。

过程 #1 是发生的过程。一切正常,因为 webpack DefinePlugin,"translates" process.env 到正确的值。

现在,这里棘手的事情是:Webpack 在构建期间执行死代码消除(a.k.a Tree shaking),这会删​​除所有不需要的分支。