nodejs环境变量NODE_ENV

  目录

nodejs环境变量NODE_ENV的设置和获取

nodejs环境变量NODE_ENV

我们在使用webpack打包的时候,会根据环境变量的不同做各种操作,那么,环境变量是如何设置和获取的呢?
首先说一下,在命令行中设置的环境变量是临时的,当命令行关闭后就没有了,要想持久化的设置环境变量,只能到我的电脑,属性,高级,环境变量里设置。

首先,创建一个app.js的文件,内容

1
console.log(process.env.NODE_ENV);

我们把环境变量打印出来看看。
在命令行下(window系统的cmd可以,powershell和git bash不行),输入

1
set NODE_ENV=pro && node app.js

打印出pro
如果想在powershell和git bash都可以使用,那就得利用npm,在package.json中的scripts里:

1
2
3
"scripts": {
"pro": "set NODE_ENV=pro && node app.js"
},

利用npm可以获取NODE_ENV的值。
这种方法的不足是,set NODE_ENV=pro是window的方式,而linux和ios是export NODE_ENV='pro',为了一套命令的兼容性,
我们可以使用cross-env这个nodejs模块,使用方法是:

1
2
3
4
"main": "app.js",
"scripts": {
"dev": "cross-env NODE_ENV=dev node app.js"
},

好了,我们已经可以获取NODE_ENV环境变量了。
再介绍一个可以获取命令行参数的方便方法,process.env.npm_config_argv
看名字就知道,只能在npm命令下使用,我们来看看具体使用方法:

1
console.log(process.env.npm_config_argv);

当我们执行npm run dev
打印出

1
{"remain":[],"cooked":["run","dev"],"original":["run","dev"]}

我们可以分析是dev还是pro来处理不同操作。
其实,我们想做的莫非就是利用命令行中不同的参数做不同的操作而已,nodejs有一个process.argv属性,可以获取命令行下的参数,来看一个例子:

1
console.log(process.argv);

我们在命令行下执行:node app.js dev pro
打印出

1
2
3
4
[ 'C:\\Program Files\\nodejs\\node.exe',
'C:\\Jinux\\test\\nodejs-env\\app.js',
'dev',
'pro' ]

我们还是可以根据命令行下的参数做不同的操作。