Turborepo 1.7
Turborepo 1.7 專注於透過更清晰地呈現您的任務來改善開發人員體驗
- 改進對長時間執行任務的支援:使用
persistent: true
標記非終止任務,以便turbo
可以在您對它們有相依性時提醒您。 - 更清晰的輸出:您現在始終需要宣告您的任務輸出,從而提高任務將快取內容的透明度。
- 全域可安裝:安裝一次,隨處使用。Turborepo 現在可以全域安裝,並從任何目錄執行,而不僅限於您的儲存庫根目錄。
- 「僅錯誤」輸出模式:讓您的輸出日誌靜音,僅在任務失敗時顯示。
立即執行 npm install turbo@latest
來更新,或全域安裝 NEW 並執行 set-default-outputs
codemod。
自信地排程您的長時間執行任務
為了避免可能導致任務永遠無法執行的錯誤配置,您現在可以使用 persistent: true
配置選項 告知 Turborepo 關於不會自行結束的任務(例如 dev
指令碼)。當在任務上設定此配置時,Turborepo 將確保沒有其他任務可以依賴此任務。這對於 dev
任務或具有 --watch
標誌的測試執行器非常有用。
先前,如果 Task B
依賴於持久性 Task A
,則 Task B
將永遠不會執行,因為 Task A
永遠不會退出。透過將 Task 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
codemod 來獲得相同的行為
另請注意,您將不再需要指定 outputs: []
,因為不快取任何內容現在是預設行為。codemod 也會從您的任務中移除此配置。
「僅錯誤」輸出模式,讓日誌更安靜
為了提高錯誤的可見性,社群成員 @dobesv 貢獻了 一個解決方案,僅顯示錯誤,而不是任務執行的所有日誌。在偵錯管線時,可以使用 --output-logs=errors-only
來保持您的訊號雜訊比率較高,以便您可以專注於確保管線成功執行。這可以用作 配置選項 或 CLI 標誌
社群
自發布 Turborepo v1.6 並與 Turbopack 合併以來,我們看到了驚人的採用率和社群成長
- 18.7k+ GitHub 星星
- 每週 75 萬次 NPM 下載
- 透過 Vercel 上的遠端快取,節省了 30 年的運算時間
Turborepo 是我們所有貢獻者(包括我們的核心團隊)共同努力的成果。
感謝您持續的支持、回饋和協作,使 Turborepo 成為您首選的建置工具。