Turborepo 1.1
自從 12 月中旬發布 Turborepo v1.0 以來,我們看到了驚人的採用率
- 5.5k+ GitHub 星星
- 每週 70k+ npm 下載量
- 65+ 位 OSS 貢獻者
- 在 Vercel、AWS、PayPal、Twilio、Contentful、Miro、Framer、Discord.js、Rocket.chat、Astro.build 等的產品中使用
- Turborepo 社群 Discord 有 585+ 位成員
我們正在透過 Turborepo v1.1 進一步改善建置效能和快取,特色包括:
- 自動遷移: 官方的冪等遷移腳本,可協助升級。
turbo.json
支援: Turborepo 設定現在位於其自己的檔案中。- 更快的套件管理員偵測: Turborepo 現在會遵循根目錄
package.json
中的packageManager
金鑰。 - 環境變數相依性: 定義環境變數如何影響全域和特定任務的快取。
- 部分支援 Yarn v2+: 支援使用
nodeLinker: "node-modules"
的 Yarn v2+。
立即執行 npm install turbo@latest
來更新。執行 turbo
後,您將會看到關於如何使用 @turbo/codemod
來執行 v1.1
自動遷移的說明。
自動遷移
Turborepo 現在提供冪等的程式碼轉換和自動遷移腳本(又稱「codemod」),以協助您在功能已棄用或將來會棄用時升級 Turborepo 程式碼庫。
Codemod 是以程式方式在您的程式碼庫上執行的轉換。這可以自動對您的程式碼套用大量變更,省下您的時間,無需手動檢查和編輯每個檔案。
用法
transform
- 轉換的名稱,請參閱文件中提供的轉換。path
- 要轉換的檔案或目錄。--dry
- 執行試運行,不會編輯程式碼。--print
- 列印已變更的輸出以進行比較。
如需特定轉換的詳細資訊,請查看新的 Codemods 文件。
turbo.json
支援
Turborepo 設定現在定義在您單一程式碼庫根目錄下的 turbo.json
檔案中。對於想要在程式碼編輯器中快速跳至 Turborepo 設定的使用者來說,這比在 package.json
中使用 turbo
金鑰更好。
若要自動從 package.json
中的目前設定遷移,請查看新的分支,導覽至單一程式碼庫的根目錄,然後執行下列 codemod
如需此轉換的詳細資訊,請查看文件。
更快的套件管理員偵測
Turborepo 現在支援最近在 package.json
中建立的 packageManager
欄位,以便更快地偵測套件管理員。先前,turbo
會檢查特定檔案以推斷此資訊。若要自動設定此欄位,請查看新的分支,導覽至單一程式碼庫的根目錄,然後執行
如需此轉換的詳細資訊,請查看文件。
環境變數相依性
當您將 turbo
與在建置時內嵌環境變數的工具(例如 Next.js 或 Create React App)一起使用時,務必告知 turbo
,以避免傳送具有錯誤環境變數的快取成品。
您現在可以根據環境變數的值和檔案的內容來控制 turbo
的快取指紋(又稱雜湊)行為
- 在您的
pipeline
定義中的dependsOn
中包含環境變數(以$
為首碼),將會影響每個任務或每個套件任務的快取指紋。 - 在
globalDependencies
清單中包含環境變數(以$
為首碼)將會影響所有任務的快取指紋。 - 在
globalDependencies
中包含檔案或檔案 glob 將會影響所有任務的快取指紋。
注意:在大多數單一程式碼庫中,您通常不會在共用套件中使用環境變數,而大多是在應用程式中使用。因此,為了獲得更高的快取命中率,您應該只在使用的/內嵌的應用程式特定任務中包含環境變數。
如需詳細資訊,請閱讀快取和雜湊文件。
部分支援 Yarn v2/v3
除了 Yarn v1、npm 和 pnpm 套件管理員之外,Turborepo 現在也支援使用.yarnrc.yml
中設定的 nodeLinker: "node-modules"
的 Yarn v2+。此金鑰會告知 Yarn v2+ 模仿 Yarn v1 的 node_modules
安裝行為。目前不支援 Yarn v2+ Plug'n'Play(又稱「PnP」)。
下一步是什麼?
自從我們推出以來,Turborepo 一直專注於無縫的增量採用/遷移以及加速 CI/CD。我們致力於這兩個價值,但現在我們也將專注於改善 Turborepo 的日常人體工學,以進行本機開發和可觀察性。我們對下一個篇章感到非常興奮,並將很快分享更多詳細資訊。
我們正在招募!
Vercel 的 Turborepo 團隊正在招募!我們特別正在尋找全職的資深全端軟體工程師和資深 DevOps/基礎架構工程師,以協助我們讓 Turborepo 變得更好。