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 | "scripts": { |
利用npm可以获取NODE_ENV的值。
这种方法的不足是,set NODE_ENV=pro
是window的方式,而linux和ios是export NODE_ENV='pro'
,为了一套命令的兼容性,
我们可以使用cross-env
这个nodejs模块,使用方法是:
1 | "main": "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 | [ 'C:\\Program Files\\nodejs\\node.exe', |
我们还是可以根据命令行下的参数做不同的操作。