返回部落格

Turborepo 1.7

2023年1月11日,星期三
Greg Soltis
姓名
Greg Soltis
X
@gsoltis
Nathan Hammond
姓名
Nathan Hammond
Tom Knickman
姓名
Tom Knickman
X
@tknickman
Anthony Shew
姓名
Anthony Shew
X
@anthonysheww
Jared Palmer
姓名
Jared Palmer
X
@jaredpalmer
Mehul Kar
姓名
Mehul Kar
X
@mehulkar
Chris Olszewski
姓名
Chris Olszewski
Nicholas Yang
姓名
Nicholas Yang
X
@nicholaslyang

Turborepo 1.7 著重於透過為您的任務帶來更清晰的說明來改善開發人員體驗

立即執行 npm install turbo@latest 來更新,或透過全域安裝 並執行set-default-outputs程式碼修改。

自信地排程您的長時間執行任務

為了避免可能導致任務永遠無法執行的錯誤配置,您現在可以使用 persistent: true 組態選項,告訴 Turborepo 關於不會自行結束的任務(例如 dev 腳本)。當此組態在任務上設定時,Turborepo 將確保沒有其他任務可以依賴此任務。這對於 dev 任務或帶有 --watch 標誌的測試執行器很有用。

turbo.json
{
	"pipeline": {
		"dev": {
+			"persistent": true
		}
	}
}

先前,如果 任務 B 依賴於持續的 任務 A,則 任務 B 將永遠不會執行,因為 任務 A 永遠不會結束。透過將 任務 A 宣告為 persistent,Turborepo 將防止發生此錯誤情況。

在此版本之前,我們一直建議對持續性任務使用 turbo run <task> --parallel。使用 --parallel 時,turbo 將忽略您的依賴圖,並一次執行所有任務。

雖然 --parallel 確實提供了一個有用的逃生方法,但這意味著使用者必須告訴 Turborepo 如何執行他們的任務,而不是宣告一個任務的 內容

與其丟棄您的整個拓撲依賴圖,不如讓 Turborepo 保留您的依賴圖,同時保證您不會依賴 persistent: true 而不會結束的進程,這樣做更為精確。

全域 turbo

一旦您全域安裝 turbo,您現在可以從專案中的任何位置執行 Turborepo 任務。要執行此操作,請使用

終端機
npm install turbo --global

turbo 現在將在任何專案中運作。要找到您的本機 turbo 版本,turbo 將執行幾個步驟,始終從您目前的目錄向上尋找

  1. 尋找最近的 turbo.json。
  2. 如果找不到,請尋找第一個具有 workspaces 屬性的 package.json
  3. 如果找不到,請尋找第一個 package.json

只有當本機安裝的 turbo 版本不存在或無法找到時,才會使用您全域安裝的 turbo 版本。

turbo-inference

turbo --versionturbo bin 將分別顯示將執行您任務的 turbo 副本的版本和二進位檔位置。此外,使用 -vv--verbosity=2 執行將始終顯示您使用的是本機還是全域 turbo

終端機
turbo --version --verbosity=2
2023-01-11T10:49:04.042-0500 [DEBUG] turborepo_lib::shim: No local turbo binary found at: /Users/knickman/Developer/vercel/my-awesome-monorepo/node_modules/.bin/turbo
2023-01-11T10:49:04.042-0500 [DEBUG] turborepo_lib::shim: Running command as global turbo
1.7.0

宣告您的 outputs 以提高清晰度

先前,如果您沒有為任務指定 outputs 金鑰,Turborepo 將自動嘗試快取 dist/build/ 目錄中的所有檔案。

這對於特定框架的 build 任務效果很好,但是這種隱式行為無法很好地擴展,因為它適用於 所有任務。我們發現,在使用 Turborepo 的許多開發人員、團隊、專案和程式碼庫中,自動快取 dist/build/ 目錄的假設正在給使用者帶來問題。

在 1.7 版中,此行為已移除,您現在需要明確告訴 turborepo 要快取什麼。

turbo.json
{
  "pipeline": {
    "build": {
+     "outputs": ["dist/**", "build/**"]
    }
  }
}

如果您依賴於 1.7 以下 Turborepo 版本中的預設快取輸出,您可以執行 @turbo/codemod set-default-outputs 程式碼修改,來獲得相同的行為

終端機
npx @turbo/codemod set-default-outputs

另請注意,您將不再需要指定 outputs: [],因為不快取任何內容現在是預設行為。程式碼修改也會從您的任務中移除此組態。

「僅錯誤」輸出模式可讓記錄更安靜

為了提高錯誤的可見性,社群成員 @dobesv 貢獻了 一個解決方案,只顯示錯誤而不是任務執行的所有記錄。在偵錯管道時,可以使用 --output-logs=errors-only 來保持您的訊號雜訊比率高,以便您可以專注於確保管道成功執行。這可以用作 組態選項 或作為 CLI 標誌

終端機
turbo build --output-logs=errors-only

社群

自從發佈 Turborepo v1.6 並與 Turbopack 合併以來,我們看到了令人難以置信的採用和社群成長

Turborepo 是我們所有貢獻者(包括我們的核心團隊)共同努力的成果。

感謝您持續的支持、回饋和協作,使 Turborepo 成為您首選的建置工具。