Turborepo 2.0

2024年6月4日,星期二
Chris Olszewski
姓名
Chris Olszewski
Nicholas Yang
姓名
Nicholas Yang
X
@nicholaslyang

Turborepo 2.0 提升了 JavaScript 和 TypeScript 專案的開發者體驗,包含以下功能:

立即執行 npx @turbo/codemod migrate 以進行更新,或使用 npx create-turbo@latest 開始使用。

請參閱升級指南以取得更新說明。 重大變更列於下方。

全新終端介面

Turborepo 1.13 中,我們發布了一個實驗性介面,以了解精進的終端介面如何提升開發速度。 透過RFC 流程,我們得以與社群合作,根據您的回饋設計出改良的本地體驗。 感謝所有參與者。

今天,我們將發布這個全新的穩定版 UI,以及其所實現的眾多高需求功能。

日誌清晰度提升

在 2.0 之前,當您在處理程式庫和應用程式時,turbo 會以串流形式輸出日誌。 這有時可能會讓人感到資訊過載,因為混合在一起的日誌難以理解特定任務的執行狀況。

在這個版本的 UI 中,您可以使用方向鍵選擇個別任務,一次檢查一個任務的日誌,讓您更容易閱讀想要關注的日誌。

小提示: 

先前版本 turbo 的串流日誌檢視模式仍然可用於本地開發,只需使用 --log-order 標記即可。 請注意,在此選項下,任務將不具互動性,且某些工具可能會意外清除終端機。

互動式任務

許多工具允許與腳本互動以實現重要功能。 然而,在先前版本的 Turborepo 中,您的腳本被限制在 turbo 內部,因此您無法與它們互動。

現在,您可以進入個別任務的 shell,並透過直接在介面中輸入,經由 stdin 將輸入傳遞至您的腳本。 這實現了諸如使用 JestVitest 執行特定測試套件、使用 DrizzlePrisma 處理資料庫遷移等工作流程。

若要將任務標記為互動式,請在其定義中新增 "persistent": true

./turbo.json
{
  "tasks": {
    "dev": {
      "cache": false,
      "persistent": true
    }
  }
}

在 UI 中選取任務後,使用 Enter 鍵進入任務的 shell,並使用 CTRL+Z 退出。

若要深入了解持久性和互動式任務,請造訪文件

監看模式

Turborepo 一次執行多個任務的能力為您提供了更緊密的意見回饋迴圈,有助於您更快地交付產品。 為了在本地工作時充分利用 Turborepo 的平行化功能,您的工具需要具備「監看器」功能,以便在您進行變更時重新執行程式碼。 遺憾的是,許多常見工具不具備此功能,而且大多數工具不具備 monorepo 感知能力,這導致了依賴於專案中其他腳本的腳本出現問題。

今天,我們發布監看模式,將此功能帶給您的所有工具

終端機
turbo watch dev lint test

使用 turbo watch,Turborepo 會在您變更原始碼時重新執行任務。 任務將使用您的依賴關係圖和 turbo.json 中的設定執行,就像 turbo run 一樣。

在文件中了解更多關於監看模式的資訊。

全新文件

在此版本中,我們也發布了經過改進的文件,這些文件建立在先前版本的優勢之上。 我們已聽取您的回饋,因此文件現在包含

造訪 Turborepo 文件。

重大變更

請參閱升級指南以取得如何更新至 2.0 的說明。

設定

turbo.json 的重大變更可以使用 npx @turbo/codemod migrate 進行更新。

正確性

其他

社群

我們很高興看到 Turborepo 持續成長和被採用

Turborepo 是所有貢獻者共同努力的成果,包括我們的核心團隊:AnthonyChrisGregMehulMitchNicholasTom

感謝您持續的支持、回饋和協作,讓 Turborepo 成為您首選的建置工具。 如果您尚未加入,請在 GitHubDiscord 上加入討論。