[Node] 環境變數設置 NODE_ENV (environment variable)
keywords: 環境變數
, env
, process.env
, cross-env
, dotenv
使用 node 指令時
使用 node
指令執行程式時:
$ export NODE_ENV=development && node index.js # Mac,寫法一
$ NODE_ENV=development node index.js # Mac,寫法二
$ set NODE_ENV=development && node index.js # Windows
在該 index.js
中即可使用 process.env.NODE_ENV
取得該變數的值:
process.env.NODE_ENV;
process.env.NODE_ENV 在哪儿设置 @ CNode.js
使用 npm 指令時
使用 npm 指令時,可以直接在 package.json
中 scripts
屬性內設定:
{
"scripts": {
"dev": "NODE_ENV=foo && node index.js"
}
}
一樣可以在 index.js
中透過 process.env.NODE_ENV
取得該變數的值。
cross-env
但若該專案會跨作業系統(即,windows)使用,建議搭配套件 cross-env 使用,只需要 package.json
中執行程式的指令前加上 cross-env
:
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
}
}
cross-env @ npm
dotenv
dotenv @ npm
透過 dotenv
可以取得專案根目錄底下的 .env
檔案:
// .env
ID=xxxxxxxx
SECRET=xxxxxxxx
使用時只需要在檔案中呼叫 require('dotenv').config()
即可取得 process.env
的內容:
// 在根目錄底下新增 .env 檔
// 載入 dotenv
require('dotenv').config();
// 使用環境變數
process.env.SECRET;
process.env.ID;
或者也可以在 package.json
的 script 去執行:
{
// ...
"scripts": {
"start": "node bin/www.js",
"dev": "node -r dotenv/config bin/www.js"
// For nodemon users ====
// "dev": "nodemon -r dotenv/config bin/www.js"
}
// ...
}
TypeScript
:::參考資料
How To Strongly Type process.env @ TotalTypeScript
:::
// global.d.ts
declare global {
namespace NodeJS {
interface ProcessEnv {
MY_ENV_VARIABLE: string;
}
}
}
export {};