Turborepo 2.4
Turborepo 2.4 包含多項改進,以增強您的儲存庫
- Boundaries 實驗性功能:Turborepo Boundaries 初探
- 終端 UI 改善:持久偏好設定與新功能
- Watch Mode 快取 實驗性功能:在 Watch Mode 中更快地開發
- 循環依賴建議:更輕鬆地在大型儲存庫中採用 Turborepo
schema.json
在node_modules
中:從您的儲存庫內部進行版本化的組態驗證- ESLint Flat Config 支援:
eslint-config-turbo
和eslint-plugin-turbo
已針對 ESLint v9 更新
立即執行 npx @turbo/codemod migrate
升級,或使用 npx create-turbo@latest
開始使用。
Boundaries 實驗性功能
Turborepo 建構於套件管理器 Workspaces 之上,並依賴生態系統慣例來判斷您的儲存庫的任務快取。然而,這要求儲存庫中的所有開發人員都了解並遵守這些慣例。
我們正在推出 Boundaries,這是一項實驗性功能,旨在捕捉儲存庫中未遵循這些最佳實務的地方。這使快取更安全,並確保您的儲存庫已準備好安全地使用未來的 Turborepo 功能。
立即使用以下指令嘗試:
此 Boundaries 的早期迭代版本包含尋找兩種 monorepo 錯誤類型
- 從套件目錄外部匯入檔案
- 匯入未在依賴項中指定的套件
Boundaries RFC
我們期待聽到您對 Boundaries RFC 的回饋,其中包括針對這些內建診斷以及自訂建構 Boundaries 的提案。
若要了解更多資訊,請造訪文件。
終端 UI 改善
我們持續迭代終端 UI,最初在 Turborepo 2.0 中發布。
持久偏好設定
在 Turborepo 的先前版本中,您每次執行 turbo
時都需要將終端 UI 重設為您想要的狀態。在 Turborepo 2.4 中,我們將持久保存您所做的一些 UI 選擇,包括
- 您先前選擇的任務將在您下次執行
turbo
時預先選取。讓您的向上和向下箭頭鍵休息一下。 - 任務列表可見性,如下所述
- 任務選擇釘選,如下所述
總之,持久保存這些偏好設定在 turbo
呼叫之間創造了更流暢的體驗,將 UI 還原到先前執行 turbo
的狀態。
新的快捷鍵
我們在終端 UI 中新增了更多功能,使其更易於使用您的任務和日誌。
- h 切換任務列表:您通常專注於您的其中一項任務,因此您不需要一直看到您的任務列表。按下 h 鍵以顯示和隱藏任務列表。此功能是一個持久偏好設定,如上所述。
- c 複製日誌:一旦您使用滑鼠反白顯示一組日誌,請按下 c 將日誌複製到您的系統剪貼簿。
- j 和 k 選擇任務:您現在可以使用 j 和 k 以及 ↑ 和 ↓ 來循環瀏覽任務列表。Vim 使用者歡呼吧。
- p 釘選選定的任務:選擇任務會設定一個「釘選」,表示它將在您的任務變更狀態時繼續被選取。您可以按下 p 來釋放釘選(或釘選您懸停的任務)。此功能是一個持久偏好設定,如上所述。
- u 和 d 捲動日誌:您現在可以按下 u 向上捲動您的日誌,以及 d 向下捲動您的日誌。
- m 了解更多資訊:按下 m 將顯示一個彈出視窗,列出所有可用的快捷鍵。
Watch Mode 快取 實驗性功能
Watch Mode 是一個 monorepo 感知的監視器,可根據您的任務圖重新執行任務。這開啟了在 monorepo 中工作的全新方式,利用單一、全域、感知依賴項的監視器,而不是許多較小、功能較弱的監視器腳本。
在此版本中,我們在 Watch Mode 中新增了快取作為實驗性功能。若要啟用它,請使用 --experimental-write-cache
標誌
若要了解更多關於 Watch Mode 的資訊,請造訪文件。
循環依賴建議
循環依賴是您的套件圖中的迴圈,會在 Turborepo 的任務圖中建立非決定性的循環。但是,如果您的任務圖中存在迴圈,Turborepo 無法判斷哪個任務先執行,因為它們都互相依賴。
在您的 monorepo 中採用 Turborepo 時,您可能會發現循環依賴,因為 Turborepo 建立的任務圖比您先前的任務執行器更複雜、更快速。先前,Turborepo 會天真地列出儲存庫的套件圖中存在的循環或迴圈中涉及的所有套件。現在,Turborepo 將包含需要分解的依賴關係,以擺脫圖中的循環。
比較以下終端輸出的前後差異
schema.json
在 node_modules
中
schema.json
檔案為 JSON 檔案在您的編輯器中提供自動完成和驗證。我們有一個可從網頁存取的 turbo.json
的 schema.json
版本,託管在 https://turbo.dev.org.tw/schema.json
,但有些開發人員偏好從 node_modules
取得檔案,以與已安裝的 turbo
版本保持同步。
從此版本開始,一旦您執行套件管理器的安裝命令,schema.json
即可在 node_modules
中使用
node_modules 位置
我們建議將 turbo
安裝在您儲存庫的根目錄,因此 schema 的路徑應指向您儲存庫根目錄的 node_modules
。在套件組態中,您可能需要使用類似 ../../node_modules/turbo/schema.json
的路徑。
造訪文件以取得更多資訊。
ESLint Flat Config 支援
Turborepo 2.4 在 eslint-config-turbo
和 eslint-plugin-turbo
中引入了對 ESLint v9 的支援,繼 ESLint v8 在 2024 年 10 月 5 日終止生命週期之後。
組態和外掛程式保持向後相容性,適用於仍在使用 ESLint v8 的使用者,以確保順利過渡。
如需更多資訊,請造訪文件。
其他變更
致謝與社群
Turborepo 是所有貢獻者(包括我們的核心團隊:Anthony、Chris、Dimitri、Nicholas 和 Tom)共同努力的成果。
感謝您持續的支持、回饋和協作,使 Turborepo 成為您首選的建置工具。若要了解如何參與,請造訪社群頁面。
我們也感謝所有為此 Turborepo 版本做出貢獻的人員:@aaronccasanova、@AlvaroParker、@ankur-arch、@arosequist、@atimmer、@bgw、@bitttttten、@chaficnajjar、@codexshell、@eps1lon、@gianelli99、@glitched-w0rld、@JasonnnW3000、@jbrocksfellas、@jeremy-code、@jonathandsouza、@Juneezee、@kayumuzzaman、@krlvi、@maciej-ka、@ognevny、@olets、@pkerschbaum、@romanofski、@shivam-pawar、@takaebato、@tevem1207、@thebrubaker、@Tofandel、@trivikr、@yamz8 和 @zsh77。