執行任務
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
如何讓您永遠不會重複執行相同的工作。
這有幫助嗎?