返回部落格

Turborepo 1.2

2022 年 4 月 8 日,星期五
Jared Palmer
姓名
Jared Palmer
X
@jaredpalmer
Becca Z.
姓名
Becca Z.
X
@becca__z
Gaspar Garcia
姓名
Gaspar Garcia
X
@gaspargarcia_
Greg Soltis
姓名
Greg Soltis
X
@gsoltis

自從一月底發布 Turborepo v1.1 以來,我們看到了驚人的採用率和社群成長

我們透過 Turborepo v1.2 進一步改進了人體工學、可觀察性和安全性,其中包括

立即執行 npm install turbo@latest 進行更新。第一次執行 turbo run 後,您將看到有關如何使用 @turbo/codemod 來執行 v1.2 自動移轉的說明。

新的任務篩選 API

我們很高興發布我們最受歡迎的功能之一:透過 --filter 標誌來表達性地篩選任務的能力。--filter 標誌是目前 --scope--include-dependencies--since--no-deps 標誌組合的更強大後繼者。

透過 --filter,您可以告知 turbo 將指令的執行限制為您的 monorepo 中符合的套件子集,依據名稱、資料夾,甚至自 git commit 參考以來是否已變更。

來看看您可以使用新的 --filter 指令完成的一些範例

您可以一起使用多個篩選器以獲得更精細的篩選,並結合上述模式的每個部分 {}[]^... 來表達更複雜的行為。

例如,如果您有一個位於 ./apps/web 目錄中的應用程式,並將本機套件作為相依性,以及一個 Turborepo 管線,其中 test 在拓撲上相依於 ^build,則執行

終端
turbo run test --filter={./apps/web}[HEAD^1]^...

會告知 turbo 確保已建置相依性,並在位於 ./apps/web 中應用程式的所有本機相依性中執行 test 指令碼,如果該應用程式自 HEAD^1 以來已變更,則不包含該應用程式本身。

如需更多詳細資料和範例,請參閱新的篩選文件

使用 --dry-run 偵錯和自動化

您現在可以透過在任何 turbo run 指令附加 --dry-run--dry-run=json 來查看 turbo run 的影響,而無需實際執行任何指令。這將導致人工或 JSON 輸出。

模擬執行對於兩種情況非常有用

Turborepo Dry Run

我們希望這能提高 turbo 運作的可見度,加快偵錯速度,並使其更容易在動態 CI/CD 系統中利用 turbo

改進的內部排程器和圖表

當使用 turbo run 時,每個 package.json 任務都會新增到內部圖表,以根據 Turborepo pipeline 中定義的推斷關聯性來對應相依性。此任務圖表允許 Turborepo 有效率地排程增量並行的任務執行,並快取任務輸出以供日後使用。

我們對內部任務排程器和產生的圖表結構進行了重大改進,從而提高了效能並改善了開發人員體驗。例如,在許多情況下,您將不再需要使用 --include-dependencies。相反,在指定您的任務進入點後,新的和改進的圖表將自動為您處理此圖表解析。

快取輸出完整性和簽章驗證

您現在可以設定 Turborepo 在將遠端快取輸出上傳到遠端快取之前,使用帶有密鑰的 HMAC-SHA256 來簽署它們。當 Turborepo 下載已簽署的快取成品時,它現在將驗證成品的完整性和真實性。任何無法驗證的成品都會被 Turborepo 忽略、丟棄並視為快取遺失。

若要啟用此功能,請在您的 turbo.json 設定檔中設定 remoteCache 選項,以包含 signature: true。然後,透過宣告 TURBO_REMOTE_CACHE_SIGNATURE_KEY 環境變數來指定您的密鑰。

./turbo.json
{
  "$schema": "[https://turbo.dev.org.tw/schema.json](https://turbo.dev.org.tw/schema.json)",
  "remoteCache": {
    // Indicates if signature verification is enabled.
    "signature": true,
  },
}

其他錯誤修復和改進

我們正在招募人才!

Vercel 的 Turborepo 團隊正在招募人才!我們今年已經有五位核心團隊成員,並希望招募更多人員。我們特別正在尋找全職的資深建置系統工程師

下一步是什麼?

除了無縫的增量採用/移轉和加速 CI/CD 之外,我們一直致力於改進 Turborepo 的日常人體工學、安全性及可觀察性。新的 --filter 標誌、已簽署的成品和模擬執行是朝著這些目標邁出的重要一步。

接下來,我們將專注於增強本機開發體驗、程式碼庫自動化和整體 CLI 效能。

感謝貢獻者

Turborepo 是超過 95 位個別開發人員和我們核心團隊共同努力的成果。

此版本是由以下人員的貢獻所帶來:@gsoltis09、@jaredpalmer、@gaspar09、@shuding、@rajatkulkarni95、@VanTanev、@Kikobeats、@tknickman、@thebanjomatic、@chelkyl、@elado、@finn-orsini、@becca、@weyert、@ekosz