返回部落格

Turborepo 1.8

2023 年 2 月 22 日,星期三
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
Alexander Lyon
姓名
Alexander Lyon
X
@_arlyon

Turborepo 1.8 透過改進 turbo 對工作區的理解,為您的程式碼庫帶來更好的靈活性和更多控制。

立即執行 npx @turbo/codemod migrate 來更新。

工作區配置

在工作區目錄中,您現在可以新增一個 turbo.json

這將使團隊能夠擴展對單體儲存庫中專案的所有權,從全域配置轉向對工作區中任務的精細控制。

例如,假設您的單體儲存庫有一個 Next.js 應用程式和一個 SvelteKit 應用程式,並且您想要使用 Turborepo 來快取 build 任務的輸出。Next.js build 腳本會建立一個 .next 目錄,而 SvelteKit 會建立一個 .svelte-kit 目錄。您可以直接在工作區中定義 outputs 金鑰,而不是將兩個建置目錄都新增到您的根 outputs 中。

turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^codegen"],
      // no need to define outputs here!
    },
  },
}
apps/my-nextjs-app/turbo.json
{
  "extends": ["//"],
  "pipeline": {
    "build": {
      // dependsOn is inherited from root
      "outputs": [".next/**", "!.next/cache/**"],
    },
  },
}
apps/my-sveltekit-app/turbo.json
{
  "extends": ["//"],
  "pipeline": {
    "build": {
      // dependsOn is inherited from root
      "outputs": [".svelte-kit/**"],
    },
  },
}

工作區配置中的 extends 金鑰使工作區擁有者能夠使用根 turbo.json 的最佳功能,並自訂使其應用程式不同的部分(如果您習慣 從您的根目錄定義要執行的任務,則 "//" 符號看起來會很熟悉)。

已宣告的索引鍵將會取代根目錄中的索引鍵(如果這些索引鍵存在),從而覆寫根配置中定義的內容。未宣告的索引鍵會從根配置繼承。

在上面的範例中,outputs 會針對兩個應用程式進行自訂,而 dependsOn 則由根 turbo.json 配置,並保持 "^codegen"

在文件中了解更多資訊.

自動工作區範圍設定

Turborepo v1.7 中,turbo 成為可全域安裝的工具,讓您能夠從程式碼庫中的任何位置執行任務。但是,turbo 仍會從根目錄執行任務,並執行您可能不打算執行的其他工作區中的任務。

在 1.8 版中,turbo 將會自動偵測您所在的工作區,並產生 --filter 語法,以將您的任務範圍限定為該工作區。

例如,如果您的目前目錄是 apps/admin,並且您使用 turbo build 命令,turbo 將會在幕後執行 turbo build --filter=admin,將焦點放在您正在處理的工作區上。

更輕鬆的移轉

升級 Turborepo 版本時,不再需要手動按正確順序執行個別的 codemod。@turbo/codemod 現在提供一個簡單的 migrate 命令,該命令既會將您的儲存庫升級到指定的 turbo 版本(預設為 latest),也會執行所需的任何 codemod。

立即使用 npx @turbo/codemod migrate 試用看看。

社群

自發佈 Turborepo v1.7 以來,我們看到了驚人的採用率和社群成長

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

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