Turborepo logo

新增至現有儲存庫

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

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

準備單一套件工作區

單一套件工作區的範例是您在執行 npx create-next-appnpm create vite 後所獲得的內容。您不需要進行任何額外工作,Turborepo 即可處理您的儲存庫,因此您可以跳至下方的第一個步驟。

若要深入了解單一套件工作區中的 Turborepo,請造訪專門指南

準備多套件工作區 (Monorepo)

turbo 建置於 Workspaces 之上,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 的方法,我們建議查看以下頁面