Turborepo 1.3
Turborepo 1.3 版本帶來了更優化的快取和彈性,其中包括:
- 受限的雜湊輸入: 使用
inputs
指定套件資料夾中影響快取的文件。 - 從 monorepo 根目錄執行和快取腳本: 從 monorepo 的根目錄執行和快取
package.json
腳本。 - 全新的 CI/CD 範例: 我們新增了將 Turborepo 與熱門 CI 供應商搭配使用的範例。
立即執行 npm install turbo@latest
來更新。
Pipeline inputs
除了環境變數、相依性和 pipeline 設定之外,當計算每個 package.json
腳本的雜湊指紋(turbo
用於索引其快取並確定是否需要重新執行腳本的金鑰)時,turbo
將會考量套件資料夾中所有未被 git 忽略的文件。使用 Turborepo 1.3+,您現在可以在 turbo.json
pipeline
中指定 inputs
的 glob 模式,以控制哪些文件與特定腳本的快取相關。 這表示您現在可以在 turbo.json
中表達以下內容:
- 忽略對套件或應用程式資料夾中所有 markdown 文件的變更。
- 如果只有測試文件變更,則不用重新建置應用程式。
- 只有當套件或資料夾中的原始碼文件或測試文件發生變更時,才重新執行測試。
- 以及更多。
讓我們來看一個具體範例:假設我們有一個 monorepo,其中包含一個用於文件網站的 Next.js 應用程式,位於 ./apps/docs-site
,以及一些套件,以及一些位於 monorepo 根目錄 ./docs
資料夾中的 markdown 文件。
假設 Next.js docs-site
渲染來自 ./docs
資料夾的 markdown 文件。我們現在可以在應用程式的 package.json
中設定 build
腳本,以在 turbo.json
中使用 inputs
,以便更精確地指定哪些文件是相關的(以及哪些文件應該影響快取),如下所示:
注意:與 outputs
類似,inputs
是相對於相關的 package.json
定義的,但它們可以位於給定資料夾之外(例如 ../../docs/**
)。
從 monorepo 根目錄執行和快取腳本
從 1.3 版本開始,turbo
現在可以從 monorepo 根目錄的 package.json
文件中執行和快取腳本,這將在遷移到 Turborepo 時提供顯著的幫助。
若要設定此功能,請在 turbo.json
的 pipeline
設定中使用 "//#<script>": {...}
格式指定根腳本。 //
告訴 turbo
腳本是相對於 monorepo 的根目錄,而不是每個工作區套件。
關於根腳本和執行範圍,有 2 個重要事項需要注意:
- 如果您在
pipeline
中已經有"build": {...}
,但想要在執行turbo run build
時包含在 monorepo 根目錄package.json
文件中定義的build
腳本,您可以透過在設定中也包含"//#build": {...}
,將根目錄加入執行的範圍。 - 相反地,如果您只需要
"//#my-script": {...}
,則不需要定義通用的"my-script": {...}
條目。
一個定義根腳本 check-examples
並將根目錄加入 test
的範例 pipeline 可能看起來像這樣:
注意:我們建議在 pipeline
中宣告根任務時,始終指定 inputs
以改善快取。
全新的 CI/CD 範例
我們新增了將 Turborepo 和遠端快取與以下工具搭配使用的範例:
如果您希望在此處看到其他範例,請開啟 GitHub 討論告知我們。
其他錯誤修正和改進
- 改進了 git 操作和雜湊
- 在相依性圖表分析中,更好的循環偵測
- 新增了對 Windows ARM 64 位元架構的支援
- 改進了遠端快取錯誤記錄
- 將 Storybook 新增至 Design System 範例
社群
自從 四月初發布 Turborepo v1.2 以來,我們看到了驚人的採用率和社群成長:
- 8.1k+ GitHub 星星
- 每週 275k+ 次 NPM 下載(成長約 2 倍)
- 1,200+ 名 Turborepo 社群 Discord 成員
- 透過 Vercel 上的遠端快取節省了 5.8 年的運算時間(成長約 5 倍),現在每週節省超過 7 個月的時間
Turborepo 是包含我們的核心團隊在內,超過 136 位貢獻者的共同努力成果。
本次發布由以下人員的貢獻促成:@gsoltis、@nathanhammond、@tknickman、@jaredpalmer、@zvictor、@ObliviousHarmony、@O4epegb、@rafaeltab、@mcmontseny、@bertspaan、@Jastor11 和 @enBonnet
感謝您持續的支持、回饋以及與我們的合作,使 Turborepo 成為您首選的建置工具。