理解process.env.NODE_ENV

1,578 阅读1分钟

process.env.NODE_ENV


在node环境下,并非为process.env中的属性,而是通过设置系统的环境变量来为其添加的。

在windows系统,我们在命令行输入node,进入node模式,输入process.env,发现process.env对象没有NODE_ENV属性。

1. 创建方式

  • cross-env 插件的使用进行跨平台设置该变量
"scripts": {
    "dev""cross-env NODE_ENV=production webpack-dev-server"
  }
  • DefinePlugin插件设置javascript全局变量
new Webpack.DefinePlugin({
     'process.env': {
       NODE_ENV: JSON.stringify(process.env.NODE_ENV) // 为了将返回值进行字符化
     }
  })

2. 使用方式

  • 在js文件中通过process.env.NODE_ENV即可使用。

3. 用途

  • 区分不同环境下的参数配置,包括开发和生产环境下依赖的管理和配置参数:
  1. devServer的参数;
  2. loader和plugin插件;
  3. sourceMap等。

4.之前的理解误区

  1. 以为仅通过DefinePlugin插件就能向系统环境变量中设置NODE_ENV的值,其实是分为设置(cross-env))和取用(definePlugin)两个步骤;
  2. cross-env是为了解决跨平台下windows设置环境变量报错的问题(其中一个痛点)。