Turborepo 1.2
自一月下旬發布 Turborepo v1.1 以來,我們看到了驚人的採用率和社群成長
- 6.5k+ GitHub 星星數
- 14萬+ 每週 npm 下載量(自我們 上次關於 v1.1 的部落格文章以來翻倍)
- 95+ 位 OSS 貢獻者
- 900+ 位 Turborepo 社群 Discord 成員
- 1.6 年 透過 Vercel 上的遠端快取節省的時間,每週節省超過 2.5 個月
我們透過 Turborepo v1.2 進一步改善了人體工學、可觀察性和安全性,其特色包括
- 新的任務過濾 API:
--filter
為turbo run
增加了更強大的任務過濾功能 - 人類可讀和 JSON 格式的 Dry run (空跑):
--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 ref 以來發生變更。
看看您可以使用新的 --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 ref 以來變更的套件比對
您可以一起使用多個篩選器以獲得更精細的過濾,並結合上述模式的每個部分 {}
、[]
、^
和 ...
來表達更複雜的行為。
例如,如果您有一個位於 ./apps/web
目錄中的應用程式,其中包含用作相依性的本地套件,以及一個 Turborepo 管道,其中 test
在拓撲上相依於 ^build
,則執行
將會告訴 turbo
確保相依性已建置,並在位於 ./apps/web
中的應用程式的所有本地相依性中執行 test
指令碼,如果應用程式自 HEAD^1 以來已變更,則不包括該應用程式本身。
如需更多詳細資訊和範例,請參閱新的過濾文件。
使用 --dry-run
進行偵錯和自動化
您現在可以透過在任何 turbo run
命令後附加 --dry-run
或 --dry-run=json
來查看 turbo run
的影響,而無需實際執行任何命令。這將產生人類可讀或 JSON 輸出。
Dry run (空跑) 對於兩種情況非常有用
- 偵錯和測試執行選項
- 使用
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 tracing 會迴歸的問題 - 您現在可以使用 CPU 百分比來設定並行性,例如
--concurrency=50%
我們正在招聘!
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