Turborepo 1.2
自從一月底發布 Turborepo v1.1 以來,我們看到了驚人的採用率和社群成長
- 6.5k+ 個 GitHub 星星
- 14 萬+ 每週 npm 下載次數(自我們上次關於 v1.1 的部落格文章以來翻了一倍)
- 95+ 位 OSS 貢獻者
- 900+ 位 Turborepo 社群 Discord 成員
- 透過 Vercel 上的遠端快取節省了 1.6 年 的時間,每週節省超過 2.5 個月的時間
我們透過 Turborepo v1.2 進一步改進了人體工學、可觀察性和安全性,其中包括
- 新的任務篩選 API:
--filter
為turbo run
新增了更強大的任務篩選功能 - 可讀的人工和 JSON 模擬執行:
--dry-run
標誌可以列印出關於turbo run
的資訊,而無需執行任何任務,並提供人工可讀和 JSON 解析友好的格式 - 改進的內部排程器和圖表:我們重構了
turbo
的內部排程器和圖表,使其更符合人體工學且更可預測 - 增強的遠端快取安全性:使用您自己的密鑰以加密方式簽署遠端快取成品
立即執行 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
指令完成的一些範例
--filter=<package_name>
- 依確切套件名稱或 glob 模式比對--filter=...<package_name>
- 依套件名稱/glob 比對並包含比對的所有相依套件--filter=...^<package_name>
- 依套件名稱/glob 比對並包含比對的所有相依套件,但不包含比對本身--filter=<package_name>...
- 依套件名稱/glob 比對並包含所有比對套件的相依性--filter=<package_name>^...
- 依套件名稱/glob 比對並包含所有比對的套件相依性,但不包含比對本身--filter={./path/to/package}
- 依路徑或檔案系統 glob 模式比對--filter=[origin/main]
- 比對自 git commit 參考以來已變更的套件
您可以一起使用多個篩選器以獲得更精細的篩選,並結合上述模式的每個部分 {}
、[]
、^
和 ...
來表達更複雜的行為。
例如,如果您有一個位於 ./apps/web
目錄中的應用程式,並將本機套件作為相依性,以及一個 Turborepo 管線,其中 test
在拓撲上相依於 ^build
,則執行
會告知 turbo
確保已建置相依性,並在位於 ./apps/web
中應用程式的所有本機相依性中執行 test
指令碼,如果該應用程式自 HEAD^1 以來已變更,則不包含該應用程式本身。
如需更多詳細資料和範例,請參閱新的篩選文件。
使用 --dry-run
偵錯和自動化
您現在可以透過在任何 turbo run
指令附加 --dry-run
或 --dry-run=json
來查看 turbo run
的影響,而無需實際執行任何指令。這將導致人工或 JSON 輸出。
模擬執行對於兩種情況非常有用
- 偵錯和測試執行選項
- 使用
turbo
篩選和任務圖表來建置自動化
我們希望這能提高 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
環境變數來指定您的密鑰。
其他錯誤修復和改進
--sso-team
標誌現在可讓具有 SAML 權杖的團隊透過turbo login
使用正確的團隊權限登入--log-output
標誌允許您控制哪些記錄會列印到終端,以及何時列印,讓您只專注於新內容- 現在支援
FORCE_COLOR
環境變數 TURBO_FORCE=true
環境變數現在將強制執行--remote-only
和TURBO_REMOTE_ONLY=true
將告知turbo
僅使用遠端快取- 當至少嘗試一個任務時,我們現在會顯示
>>> FULL TURBO
turbo run
指令支援使用 Plug'n'Play (PnP linker) 的 Yarn v2+,但仍不完全支援turbo prune
- 修復了如果指定
--profile
時 chrome 追蹤的回歸問題 - 您現在可以使用
--concurrency=50%
設定 CPU 百分比的並行性
我們正在招募人才!
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