使用環境變數
由於環境變數未擷取在原始碼中,因此無法輕鬆地在多台機器間共用。若要為您的儲存庫設定環境變數,您需要利用多項 Turborepo 功能。
與 Next.js 和其他載入環境變數的函式庫搭配使用
如果你的架構會從特定檔案自動載入環境變數,例如 .env
,你必須告訴 turbo
這些檔案的位置。以下顯示 Next.js 和 Vite 的基本設定,它們會自行載入環境檔案
{
"$schema": "https://turbo.dev.org.tw/schema.json",
"globalDotEnv": [".env"],
"pipeline": {
"build": {
"dotEnv": [".env.production.local", ".env.local", ".env.production", ".env"]
},
"dev": {
"dotEnv": [".env.development.local", ".env.local", ".env.development", ".env"]
},
"test": {
"dotEnv": [".env.test.local", ".env.test", ".env"]
}
}
}
載入你自己的變數
如果你需要在執行前將大量環境變數載入你的環境中,我們建議使用 dotenv-cli
。這是將你的環境變數帶入開發任務的最簡單方法。
Turborepo 沒有將任何 .env
檔案載入環境中!你的任務必須自行處理 .env
檔案的載入。
使用已安裝在本地的 turbo
-
將你所有的變數放入單一儲存庫根目錄的
.env
檔案中。 -
將
dotenv-cli
安裝到儲存庫的根目錄。
{
"devDependencies": {
"dotenv-cli": "latest"
}
}
- 調整指令碼,將環境變數注入
turbo
指令。
{
"scripts": {
"dev": "dotenv -- turbo dev"
}
}
- 將
.env
檔案新增到turbo.json
{
"globalDotEnv": [".env"],
"pipeline": {
"dev": {
"dependsOn": ["^build"]
}
}
}
使用已全球安裝的 turbo
如果您正在全球使用 turbo
,您還需要全球安裝 dotenv-cli
,這樣您就可以在終端機中 turbo
指令前面加上 dotenv --
dotenv -- turbo dev
進階設定:每個工作區的環境變數
您可能希望讓您的工作區負責載入自己的環境變數。如果您不介意 package.json
指令碼中額外的設定開銷,這種方法更靈活,並且可以獲得更好的結果。
若要使用此策略
-
將變數放入
.env
檔案(位於需要載入的套件根目錄中)。 -
在工作區中安裝
dotenv-cli
。
{
"scripts": {
"dev": "dotenv -e .env.development -- start-server",
"build": "dotenv -e .env -- bundle-app"
},
"devDependencies": {
"dotenv-cli": "latest"
}
}
- 將
.env
檔案新增至turbo.json
{
"globalDotEnv": [".env"],
"pipeline": {
"dev": {
"dotEnv": [".env.development"],
"dependsOn": ["^build"]
}
}
}