執行任務
Turborepo 透過自動平行處理和快取任務,最佳化您儲存庫中的開發者工作流程。一旦任務在 turbo.json
中註冊,您將擁有強大的新工具集,用於執行儲存庫中的腳本。
透過 turbo
執行任務非常強大,因為您可以在開發和 CI 管線中,使用單一模型在整個儲存庫中執行工作流程。
在 package.json
中使用 scripts
對於您經常執行的任務,您可以直接將 turbo
命令寫入根目錄的 package.json
中。
須知:
turbo
是 turbo run
的別名 - 但我們建議在 package.json
和 CI 工作流程中使用 turbo run
,以避免未來可能新增的 turbo
子命令發生潛在衝突。
這些腳本隨後可以使用您的套件管理器執行。
您只需要在根目錄的 package.json
中寫入 turbo
命令。將 turbo
命令寫入套件的 package.json
中可能會導致遞迴呼叫 turbo
。
使用全域 turbo
全域安裝 turbo
可讓您直接從終端機執行命令。這改善了您的本機開發體驗,因為它讓您更容易在需要的時間執行所需的內容。
此外,全域 turbo
在您的 CI 管線中非常有用,讓您可以最大限度地控制在管線的每個點要執行的確切任務。
自動套件範圍界定
當您位於套件的目錄中時,turbo
會自動將命令範圍界定為該套件的套件圖。這表示您可以快速撰寫命令,而無需為套件撰寫篩選器。
在上面的範例中,turbo build
命令將使用在 turbo.json
中註冊的 build
任務,為 docs
套件執行 build
任務。
須知:
使用篩選器 將覆寫自動套件範圍界定。
自訂行為
在 run
子命令的文件中,您會找到許多有用的標誌,可以根據您的需求調整 turbo run
的行為。當執行全域 turbo
時,您可以使用以下工作流程更快地執行:
- 最常用命令的變體:當
package.json
中的build
腳本為turbo build
時,它最有用 - 但您可能目前只對特定套件感興趣。您可以使用turbo build --filter=@repo/ui
快速篩選出您感興趣的特定套件。 - 一次性命令:像
turbo build --dry
這樣的命令不常需要,因此您可能不會在package.json
中為其建立腳本。相反地,您可以在需要時直接在終端機中執行它。 - 覆寫
turbo.json
設定:某些 CLI 標誌在turbo.json
中有對應的等效項,您可以覆寫它。例如,您可能已將turbo build
命令設定為在turbo.json
中使用"outputLogs": "full"
- 但您目前只對查看錯誤感興趣。使用全域turbo
,您可以使用turbo lint --output-logs=errors-only
來僅顯示錯誤。
執行多個任務
turbo
能夠執行多個任務,並在可能的情況下進行平行處理。
此命令將執行所有任務,並根據您的任務定義,自動偵測它可以盡早執行腳本的位置。
任務順序
turbo test lint
將以與 turbo lint test
完全相同的方式執行任務。
如果您想確保一個任務阻止另一個任務的執行,請在您的任務設定中表達該關係。
使用篩選器
雖然快取確保您永遠不會重複執行相同的工作而保持快速,但您也可以篩選任務,僅執行任務圖的子集。
在 --filter
API 參考資料中有許多篩選的高階使用案例,但最常見的使用案例將在下面討論。
依套件篩選
依套件篩選是一種僅針對您目前正在處理的套件執行任務的簡單方法。
您也可以直接在 CLI 命令中篩選套件的特定任務,而無需使用 --filter
依目錄篩選
您的儲存庫可能具有目錄結構,其中相關套件被分組在一起。在這種情況下,您可以捕獲該目錄的 glob,以將 turbo
集中在這些套件上。
篩選以包含依賴項
當您處理特定套件時,您可能想要為該套件及其依賴項執行任務。當您對套件進行變更並想確保變更不會破壞其任何依賴項時,...
微語法很有用。
篩選以包含相依性
若要將範圍限制為套件及其相依性,請將 ...
附加到套件名稱。這會為指定的套件及其所依賴的所有套件執行任務。
依原始碼控制變更篩選
使用篩選器根據原始碼控制中的變更執行任務,是僅針對受變更影響的套件執行任務的好方法。原始碼控制篩選器必須以 []
包裹。
- 與前一個提交比較:
turbo build --filter=[HEAD^1]
- 與主分支比較:
turbo build --filter=[main...my-feature]
- 使用 SHA 比較特定提交:
turbo build --filter=[a1b2c3d...e4f5g6h]
- 使用分支名稱比較特定提交:
turbo build --filter=[your-feature...my-feature]
一般來說,您可以依靠快取來保持儲存庫快速。當您使用遠端快取時,您可以指望未變更的套件命中快取。
組合篩選器
為了更精確,您可以組合篩選器以進一步細化進入任務圖的入口點。
多個篩選器組合為聯集,表示任務圖將包含符合任何篩選器的任務。有關篩選器高階用法的更多資訊,請參閱 --filter
API 參考資料。
後續步驟
當您開始在儲存庫中執行任務時,您可能會開始注意到您的任務變得更快。接下來,您將探索快取,以及 turbo
如何讓您永遠不會重複執行相同的工作。