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 來更新,或全域安裝 NEW 並執行 set-default-outputs codemod。

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

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

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

先前,如果 Task B 依賴於持久性 Task A,則 Task B 將永遠不會執行,因為 Task A 永遠不會退出。透過將 Task A 宣告為 persistent,Turborepo 將防止發生此錯誤情況。

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

雖然 --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 codemod 來獲得相同的行為

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

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

「僅錯誤」輸出模式,讓日誌更安靜

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

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

社群

自發布 Turborepo v1.6 並與 Turbopack 合併以來,我們看到了驚人的採用率和社群成長

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

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