一、process.env
process.env屬性返回一個包含用戶環境信息的對象。
最常見的需求,前端需要根據不同的環境(dev,prd),來調用不同的后端接口。如果用webpack,是這么做的:
1)package.json里的命令:
"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},
2)webpack.config.js獲取
console.log(process.env.NODE_ENV) //執行npm run dev,打印development
事實上,以上從命令行獲取環境變量這個件事跟webpack沒有關系,執行node文件也可以這樣獲取。
1)新建文件test.js:
console.log(global.process.env.a);
2)命令行執行test.js:
a=1 node test.js
命令行輸出a的值1。
題外話,如果順序改變呢?命令行執行下面的命令
node test.js a=1
測試結果:test.js能被執行,但獲取不到a的值。
global.process.env.a這個變量在這次node命名結束前都能獲取到,如果是以后執行也能獲取到,就需要用以下的命令(mac linux):
export a=2 && node test.js
這條命令運行后,只要運行node文件,在文件里可以得到 global.process.env.a的值為2.
二 、process.argv
還記得前面說過,下面的命令無法通過 process.env 獲取。
node test.js a=1
這時候就要用到process.argv。他返回當前進程的所有命令行參數,是個數組,前2個元素是node命令路徑和被執行的文件路徑:

所以經常見到
process.argv.slice(2)
process是node的全局變量,不用require直接能訪問。中文文檔標注為:進程對象。它提供當前 Node.js 進程的有關信息,以及控制當前 Node.js 進程。
