在 Node.js 使用環境變數

接某專案時,在 package.json 看到以下的 Script 不太熟悉,做了筆記。

1
2
3
4
5
{
"scripts": {
"dev": "LATEST_COMMIT=$(git rev-parse HEAD) node build/dev-server.js",
},
}

環境變數

在系統執行期間存在於系統背景的一組變數,隨時可以被新增與更動。系統在執行程式時,可以依據需要去存取環境變數,來得到相關資訊並使用。例如:程式可以透過 TEMP 這個環境變數取得放置暫存檔的位置。

Node.js 如何使用環境變數?

執行 Node.js 後,可以在執行檔內存去 process.env 這個全域物件來取得環境變數的資訊。

為什麼會需要存取環境變數?在部署程式時,有些較機密的資訊不會放在程式內,不然放到 Git 就被看光了。這些東西可能會事先設定在機器系統的環境變數內,再讓 Node.js 寫的程式去讀它。

只有在程式執行期間存在的環境變數

一般情況下,在終端機設定了環境變數,該環境變數就會永久存在直到我們將其移除。有的時候我們只希望環境變數在我們執行某程式時才存在,可以如下寫法:

1
$ <環境變數 KEY>=<環境變數值> <執行檔>

這麼一來,該環境變數就只會在執行檔執行該程式時存在,結束後就沒了。

所以最一開始的那段就是,在執行 dev-server.js 這支程式前,先設定一個只有在執行期間存在的環境變數 LATEST_COMMIT ,內容是該專案的最新 Git 版本編號 。

如此一來,我們就可以在該程式內用 process.env.LATEST_COMMIT 取得該專案的最新編號。

參考資料

Enviroment Variable
Shell Script Environ