Turborepo

新增至現有儲存庫

Turborepo 可以逐步導入**任何儲存庫,無論是單一套件或多套件**,以加快儲存庫的開發人員和 CI 工作流程。

在安裝 turbo 並在 turbo.json 中設定您的任務後,您會注意到快取如何協助您更快地執行任務。

準備單一套件工作區

一個單一套件工作區,例如,是在執行 npx create-next-appnpm create vite 後得到的。您不需要做任何額外的工作,Turborepo 即可處理您的儲存庫,因此您可以跳到下面的第一步。

若要深入瞭解單一套件工作區中的 Turborepo,請參閱專用指南

準備多套件工作區 (monorepo)

turbo 建構於 Workspaces 之上,這是 JavaScript 生態系統中主要套件管理員的一項功能。這使得它很容易在您現有的程式碼庫中採用。

要知道的事

如果您發現 turbo 有問題,例如無法探索工作區中的套件或無法遵循您的相依性圖,請參閱我們的建構儲存庫頁面以取得提示。

請注意,您不必立即使用 turbo 開始執行 _所有_ 套件的 _所有_ 任務。您可以從少數幾個套件中的單一任務開始,並隨著您對 Turborepo 的熟悉度增加,逐步新增更多任務和套件。

將 Turborepo 新增至您的儲存庫

安裝 turbo

我們建議您將 turbo 同時安裝到全域和儲存庫的根目錄中,以獲得最佳的開發人員體驗。

終端機
# Global install
npm install turbo --global
# Install in repository
npm install turbo --save-dev

若要深入瞭解為什麼我們建議同時安裝,請參閱安裝頁面

新增 turbo.json 檔案

在您的儲存庫根目錄中,建立一個 turbo.json 檔案。

在本指南中,我們將使用 buildcheck-types 任務,但您可以將這些替換為您感興趣的其他任務,例如 linttest

./turbo.json
{
  "$schema": "https://turbo.dev.org.tw/schema.json",
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": [".next/**", "!.next/cache/**"]
    },
    "check-types": {
      "dependsOn": ["^check-types"]
    },
    "dev": {
      "persistent": true,
      "cache": false
    }
  }
}

如需設定 turbo.json 的詳細資訊,請參閱設定選項文件。

在您的 Next.js 應用程式中,請確保您有一個 check-types 指令碼,以便 turbo 執行。

apps/web/package.json
{
  "scripts": {
+   "check-types": "tsc --noEmit"
  }
}

在多套件工作區中,您可能也想要將 check-types 指令碼新增至一個或多個函式庫套件,以查看多個指令碼如何透過一個 turbo 命令在不同套件中執行。

編輯 .gitignore

.turbo 新增至您的 .gitignore 檔案。turbo CLI 使用這些資料夾來保存記錄、輸出和其他功能。

.gitignore
+ .turbo

packageManager 欄位新增至根 package.json

Turborepo 使用來自您套件管理員的資訊來最佳化您的儲存庫。若要宣告您使用的套件管理員,如果您還沒有,請將 packageManager 欄位新增至您的根 package.json

package.json
{
+  "packageManager": "npm@8.5.0"
}

要知道的事

根據您的儲存庫,您可能需要在遷移時或在您還無法使用 packageManager 鍵的情況下,使用 dangerouslyDisablePackageManagerCheck

使用 turbo 執行任務

您現在可以使用 Turborepo 執行您先前新增至 turbo.json 的任務。使用上面的範例任務

終端機
turbo build check-types

這會同時執行 buildcheck-types 任務。您的工作區的相依性圖將用於按正確的順序執行任務。

在不對程式碼進行任何變更的情況下,請嘗試再次執行 buildcheck-types

終端機
turbo check-types build

您應該會看到類似這樣的終端機輸出

終端機
 Tasks:    2 successful, 2 total
Cached:    2 cached, 2 total
  Time:    185ms >>> FULL TURBO

恭喜!**您剛剛在毫秒內建置並進行程式碼類型檢查**。

若要深入瞭解 turbo 如何實現此目的,請查看快取文件

開始使用 turbo 執行 dev 進行開發

在多套件工作區中,您可以執行 turbo dev 來同時啟動所有套件的開發任務。

終端機
turbo dev

您也可以使用篩選器來專注於特定套件及其相依性。

請注意,此步驟在單一套件工作區中沒有太多價值,因為

  • 您不會快取開發任務的輸出。
  • 只有一個開發指令碼,因此沒有任何東西可以平行執行。

後續步驟

您現在已開始執行 Turborepo!若要瞭解更多改善工作流程和充分利用 turbo 的方法,我們建議您查看以下頁面

小時

總計節省的運算時間
開始使用
遠端快取 →

本頁內容