Turborepo 1.7
Turborepo 1.7 著重於透過為您的任務帶來更清晰的說明來改善開發人員體驗
- 改進對長時間執行任務的支援:使用
persistent: true
來標記非終止任務,以便turbo
可以在您對它們有相依性時提醒您。 - 更清楚的輸出說明:您現在將總是需要宣告您的任務輸出,提高任務快取的透明度。
- 可全域安裝:安裝一次,隨處使用。Turborepo 現在可以全域安裝,並從任何目錄執行,而不僅限於您的程式碼庫根目錄。
- 「僅錯誤」輸出模式:使您的輸出記錄靜音,只在任務失敗時顯示。
立即執行 npm install turbo@latest
來更新,或透過全域安裝新 並執行set-default-outputs
程式碼修改。
自信地排程您的長時間執行任務
為了避免可能導致任務永遠無法執行的錯誤配置,您現在可以使用 persistent: true
組態選項,告訴 Turborepo 關於不會自行結束的任務(例如 dev
腳本)。當此組態在任務上設定時,Turborepo 將確保沒有其他任務可以依賴此任務。這對於 dev
任務或帶有 --watch
標誌的測試執行器很有用。
先前,如果 任務 B
依賴於持續的 任務 A
,則 任務 B
將永遠不會執行,因為 任務 A
永遠不會結束。透過將 任務 A
宣告為 persistent
,Turborepo 將防止發生此錯誤情況。
在此版本之前,我們一直建議對持續性任務使用 turbo run <task> --parallel
。使用 --parallel
時,turbo
將忽略您的依賴圖,並一次執行所有任務。
雖然 --parallel
確實提供了一個有用的逃生方法,但這意味著使用者必須告訴 Turborepo 如何執行他們的任務,而不是宣告一個任務的 內容。
與其丟棄您的整個拓撲依賴圖,不如讓 Turborepo 保留您的依賴圖,同時保證您不會依賴 persistent: true
而不會結束的進程,這樣做更為精確。
全域 turbo
一旦您全域安裝 turbo
,您現在可以從專案中的任何位置執行 Turborepo 任務。要執行此操作,請使用
turbo
現在將在任何專案中運作。要找到您的本機 turbo
版本,turbo
將執行幾個步驟,始終從您目前的目錄向上尋找
- 尋找最近的 turbo.json。
- 如果找不到,請尋找第一個具有
workspaces
屬性的package.json
。 - 如果找不到,請尋找第一個
package.json
。
只有當本機安裝的 turbo
版本不存在或無法找到時,才會使用您全域安裝的 turbo
版本。
turbo --version
和 turbo bin
將分別顯示將執行您任務的 turbo
副本的版本和二進位檔位置。此外,使用 -vv
或 --verbosity=2
執行將始終顯示您使用的是本機還是全域 turbo
。
宣告您的 outputs
以提高清晰度
先前,如果您沒有為任務指定 outputs
金鑰,Turborepo 將自動嘗試快取 dist/
和 build/
目錄中的所有檔案。
這對於特定框架的 build
任務效果很好,但是這種隱式行為無法很好地擴展,因為它適用於 所有任務。我們發現,在使用 Turborepo 的許多開發人員、團隊、專案和程式碼庫中,自動快取 dist/
和 build/
目錄的假設正在給使用者帶來問題。
在 1.7 版中,此行為已移除,您現在需要明確告訴 turborepo 要快取什麼。
如果您依賴於 1.7 以下 Turborepo 版本中的預設快取輸出,您可以執行 @turbo/codemod set-default-outputs
程式碼修改,來獲得相同的行為
另請注意,您將不再需要指定 outputs: []
,因為不快取任何內容現在是預設行為。程式碼修改也會從您的任務中移除此組態。
「僅錯誤」輸出模式可讓記錄更安靜
為了提高錯誤的可見性,社群成員 @dobesv 貢獻了 一個解決方案,只顯示錯誤而不是任務執行的所有記錄。在偵錯管道時,可以使用 --output-logs=errors-only
來保持您的訊號雜訊比率高,以便您可以專注於確保管道成功執行。這可以用作 組態選項 或作為 CLI 標誌
社群
自從發佈 Turborepo v1.6 並與 Turbopack 合併以來,我們看到了令人難以置信的採用和社群成長
- 18.7k+ GitHub 星星
- 每週 75 萬次 NPM 下載
- 透過 在 Vercel 上進行遠端快取 節省了 30 年的運算時間
Turborepo 是我們所有貢獻者(包括我們的核心團隊)共同努力的成果。
感謝您持續的支持、回饋和協作,使 Turborepo 成為您首選的建置工具。