設定 turbo.json
透過在您的工作區根目錄中新增一個 turbo.json
檔案,來設定 turbo
的行為。
全域選項
extends
使用 套件設定,從根 turbo.json
延伸,為套件建立特定的設定。
extends
的唯一有效值是["//"]
,表示繼承根turbo.json
的設定。- 如果在根
turbo.json
中使用extends
,它將會被忽略。
globalDependencies
您想要包含在所有任務雜湊中的 glob 列表。如果任何符合這些 glob 的檔案發生變更,所有任務都會錯失快取。 Glob 相對於 turbo.json
的位置而言。
預設情況下,工作區根目錄中所有在原始碼控制中的檔案都會包含在全域雜湊中。
Glob 必須在存放庫的原始碼控制根目錄中。不支援存放庫之外的 glob。
globalEnv
您想要影響所有任務雜湊的環境變數列表。對這些環境變數的任何變更都會導致所有任務錯失快取。
如需關於萬用字元和否定語法的詳細資訊,請參閱 env
區段。
globalPassThroughEnv
您想要提供給任務使用的環境變數列表。使用此鍵會讓所有任務選擇加入嚴格環境變數模式。
此外,Turborepo 還有一組內建的全域傳遞變數,用於常見情況,例如作業系統環境變數。這包括 HOME
、PATH
、APPDATA
、SHELL
、PWD
等變數。完整的清單可以在原始碼中找到。
ui
預設值:"stream"
為存放庫選取終端機 UI。
"tui"
允許一次檢視每個記錄,並與任務互動。"stream"
會在記錄傳入時輸出,且不具互動性。
dangerouslyDisablePackageManagerCheck
預設值:false
Turborepo 使用您存放庫的鎖定檔來決定快取行為、套件圖等等。因此,我們使用 packageManager
欄位來協助您穩定 Turborepo。
為了協助逐步遷移或在您無法使用 packageManager
欄位的情況下,您可以使用 --dangerously-disable-package-manager-check
來選擇退出此檢查,並承擔不穩定的鎖定檔產生不可預測行為的風險。停用時,Turborepo 會盡力探索存放庫的目標套件管理器。
您也可以透過 flag
或 TURBO_DANGEROUSLY_DISABLE_PACKAGE_MANAGER_CHECK
環境變數來選擇退出此檢查。
cacheDir
預設值:".turbo/cache"
指定檔案系統快取目錄。
daemon
預設值:true
Turborepo 執行一個背景處理程序,以預先計算一些耗費資源的操作。此獨立處理程序 (daemon) 是一種效能最佳化,並非 turbo
正常運作所必需的。
須知
在 CI 環境中執行時,無論此設定為何,daemon 一律會停用。
envMode
預設值:"strict"
Turborepo 的環境模式可讓您控制在執行階段哪些環境變數可供任務使用
"strict"
:篩選環境變數,只保留turbo.json
中env
和globalEnv
鍵中指定的變數。"loose"
:允許使用處理程序的所有環境變數。
深入瞭解環境模式。
定義任務
tasks
tasks
物件中的每個鍵都是一個任務的名稱,可以使用 turbo run
執行。Turborepo 會在您的工作區設定中描述的套件中,搜尋 package.json
中與任務名稱相同的指令碼。
使用任務中描述的其餘設定,Turborepo 會按照描述的順序執行指令碼,並在提供outputs
鍵時,快取記錄和檔案輸出。
在下面的範例中,我們在 tasks
鍵下定義了三個任務:build
、test
和 dev
。
任務選項
使用您在 tasks
中定義的任務中可用的選項,您可以描述 turbo
將如何執行您的任務。
dependsOn
任務開始執行之前必須完成的任務列表。
有三種 dependsOn
關係類型:相依性關係、相同套件關係和任意任務關係。
相依性關係
在 dependsOn
中為字串加上 ^
字首,會告知 turbo
任務必須等待套件相依性中的任務先完成。例如,在下面的 turbo.json
中
turbo
會從套件圖的「底部」開始,遞迴地訪問每個套件,直到找到沒有內部相依性的套件為止。然後,它會先在相依性鏈的末端執行 build
任務,然後再回到「頂部」,直到所有 build
任務都依序完成。
相同套件關係
沒有 ^
字首的任務名稱描述一個任務,該任務相依於同一套件中的另一個任務。例如,在下面的 turbo.json
中
test
任務只會在 lint
和 build
任務 在同一套件中 完成之後執行。
任意任務關係
在特定套件任務之間指定任務相依性。
在此 turbo.json
中,web#lint
任務會等待 utils#build
任務完成。
env
任務相依的環境變數列表。
須知
Turborepo 會透過框架推斷自動包含以常見框架為前綴的環境變數。舉例來說,如果您的套件是一個 Next.js 專案,您不需要指定任何以 NEXT_PUBLIC_
開頭的環境變數。
萬用字元
Turborepo 支援環境變數的萬用字元,讓您可以輕鬆處理所有具有特定前綴的環境變數。例如,下方的 turbo.json
會將所有以 MY_API_
開頭的環境變數包含到雜湊中。
否定
開頭的 !
表示整個模式將被否定。例如,下方的 turbo.json
將忽略 MY_API_URL
變數。
範例
模式 | 描述 |
---|---|
"*" | 匹配每個環境變數。 |
"!*" | 排除每個環境變數。 |
"FOO*" | 匹配 FOO 、FOOD 、FOO_FIGHTERS 等。 |
"FOO\*" | 解析為 "FOO*" 並匹配 FOO 、FOOD 和 FOO_FIGHTERS 。 |
"FOO\\*" | 匹配名為 FOO* 的單個環境變數。 |
"!FOO*" | 排除所有以 FOO 開頭的環境變數。 |
"\!FOO" | 解析為 "!FOO" ,並排除名為 !FOO 的單個環境變數。 |
"\\!FOO" | 匹配名為 !FOO 的單個環境變數。 |
"FOO!" | 匹配名為 FOO! 的單個環境變數。 |
passThroughEnv
一個允許清單,列出應提供給此任務執行階段的環境變數,即使在嚴格環境模式下也是如此。
outputs
一個相對於套件 package.json
的檔案 glob 模式列表,用於在任務成功完成時快取。
省略此鍵或傳遞空陣列會告知 turbo
不要快取任何內容(除了日誌,在啟用快取時始終會快取)。
cache
預設值:true
定義是否應快取任務輸出。將 cache
設定為 false 對於長時間執行的開發任務以及確保任務始終在其執行圖中執行很有用。
inputs
預設值:[]
,套件中所有已簽入原始碼控制的檔案
一個相對於套件 package.json
的檔案 glob 模式列表,用於在判斷套件是否已變更時考慮。turbo.json
始終被視為輸入。
請造訪檔案 glob 規格以取得有關 glob 語法的更多資訊。
使用 inputs
鍵會使您退出 turbo
考慮 .gitignore
的預設行為。您必須根據需要從 .gitignore
重建 glob,或使用 $TURBO_DEFAULT$
來建構預設行為。
$TURBO_DEFAULT$
由於指定 inputs
鍵會立即退出預設行為,您可以在 inputs
陣列中使用特殊字串 $TURBO_DEFAULT$
來恢復 turbo
的預設行為。這讓您可以微調預設行為以獲得更高的精細度。
outputLogs
預設值:full
設定輸出記錄詳細程度。可以透過 --output-logs
CLI 選項覆寫。
選項 | 描述 |
---|---|
full | 顯示所有日誌 |
hash-only | 僅顯示任務的雜湊值 |
new-only | 僅顯示快取未命中時的日誌 |
errors-only | 僅顯示任務失敗時的日誌 |
none | 隱藏所有任務日誌 |
persistent
預設值:false
將任務標記為 persistent
,以防止其他任務依賴長時間運行的程序。預設情況下,持續性任務會設為互動式。
由於長時間運行的程序不會結束,因此依賴它的任務將永遠不會執行。一旦您將任務標記為持續性,如果其他任務依賴它,turbo
將會拋出錯誤。
此選項對於開發伺服器或其他「監看」任務最有用。
標記為 persistent
的任務預設也會是 interactive
。
interactive
預設值:false
(對於標記為 persistent
的任務,預設為 true
)
將任務標記為 interactive
,使其在終端 UI 中接受來自 stdin
的輸入。必須與 persistent
一起使用。
此任務對於在運行時可以操作的腳本最有用,例如 Jest 或 Vitest。
interruptible
預設值:false
將 persistent
任務標記為 interruptible
,允許 turbo watch
重新啟動它。
turbo watch
監看您套件的變更,並自動重新啟動受影響的任務。但是,如果任務是持續性的,則預設情況下不會重新啟動。若要啟用重新啟動持續性任務,請將 interruptible
設定為 true
。
遠端快取
全域 remoteCache
選項具有各種欄位,可設定遠端快取的使用方式
enabled
預設值:true
啟用遠端快取。
當 false
時,Turborepo 將停用所有遠端快取操作,即使儲存庫具有有效的 token 也會如此。如果為 true,則會啟用遠端快取,但仍需要使用者登入並將其儲存庫連結至遠端快取。
signature
預設值:false
啟用對遠端快取請求的簽章驗證。當 true
時,Turborepo 將使用環境變數 TURBO_REMOTE_CACHE_SIGNATURE_KEY
的值對每個上傳的成品進行簽名。Turborepo 將拒絕任何具有無效簽章或缺少簽章的下載成品。
preflight
預設值:false
啟用後,任何 HTTP 請求之前都會有一個 OPTIONS 請求,以判斷端點是否支援該請求。
timeout
預設值:30
設定遠端快取操作的逾時時間。值以秒為單位,且僅接受整數值。如果傳遞 0
,則任何快取操作都不會逾時。
uploadTimeout
預設值:60
設定遠端快取上傳的逾時時間。值以秒為單位,且僅接受整數值。如果傳遞 0
,則任何遠端快取上傳都不會逾時。
apiUrl
預設值:"https://vercel.com"
設定對遠端快取進行 API 呼叫的端點。
loginUrl
預設值:"https://vercel.com"
設定在 turbo login
期間請求 token 的端點。
這有幫助嗎?