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/codemodv1.2 執行自動遷移的說明。

新的任務過濾 API

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

透過 --filter,您可以告訴 turbo 將命令執行限制在 monorepo 中符合條件的套件子集,條件可基於名稱、資料夾,甚至是否自 git commit ref 以來發生變更。

看看您可以使用新的 --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 輸出。

Dry run (空跑) 對於兩種情況非常有用

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 標記、簽署工件和 dry run (空跑) 是朝著這些目標邁出的重要步驟。

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

感謝貢獻者

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

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