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. 用途
- 区分不同环境下的参数配置,包括开发和生产环境下依赖的管理和配置参数:
- devServer的参数;
- loader和plugin插件;
- sourceMap等。
4.之前的理解误区
- 以为仅通过DefinePlugin插件就能向系统环境变量中设置NODE_ENV的值,其实是分为设置(cross-env))和取用(definePlugin)两个步骤;
- cross-env是为了解决跨平台下windows设置环境变量报错的问题(其中一个痛点)。