Turborepo logo

開發應用程式

在 Monorepo 中開發應用程式,能解鎖強大的工作流程,讓您對原始碼控制進行原子提交,並輕鬆存取程式碼。

大多數開發任務都是長時間執行的任務,會監看程式碼變更。Turborepo 透過強大的終端 UI 和其他功能(例如)來強化此體驗

設定開發任務

turbo.json 中定義開發任務,會告知 Turborepo 您將執行長時間運行的任務。這對於執行開發伺服器、執行測試或建置應用程式等很有用。

若要註冊 dev 任務,請將其新增至具有兩個屬性的 turbo.json

./turbo.json
{
  "tasks": {
    "dev": {
      "cache": false,
      "persistent": true
    }
  }
}
  • "cache": false:告訴 Turborepo 不要嘗試快取任務的結果。由於這是開發任務,您可能會頻繁變更程式碼,因此快取結果沒有用處。
  • "persistent": true:告訴 Turborepo 保持任務運行直到您停止它。此鍵作為終端 UI 將任務視為長時間運行且互動式的訊號。此外,它可以防止您意外地依賴不會結束的任務。

您現在可以執行 dev 任務以平行啟動您的開發腳本

終端
turbo dev

dev 之前執行設定任務

您可能也想要執行設定您的開發環境或預先建置套件的腳本。您可以使用 dependsOn 確保這些任務在 dev 任務之前執行

./turbo.json
{
  "tasks": {
    "dev": {
      "cache": false,
      "persistent": true,
      "dependsOn": ["//#dev:setup"]
    },
    "//#dev:setup": {
      "outputs": [".codegen/**"]
    }
  }
}

在此範例中,我們使用的是根任務,但您可以對套件中的任意任務使用相同的概念。

執行特定的應用程式

--filter 標記可讓您挑選 套件圖 的子集,以便您可以針對特定應用程式及其依賴項執行 dev 任務

終端
turbo dev --filter=web

使用終端 UI

Turborepo 的終端 UI 啟用許多功能,可圍繞您的任務建立高度互動式的體驗。

自訂您的檢視畫面

您可以使用快速鍵快速調整 UI 以滿足您的需求。

快速鍵動作
m切換彈出視窗以列出快速鍵
/選取任務清單中的下一個/上一個任務
j/k選取任務清單中的下一個/上一個任務
p切換選取任務的釘選
h切換任務清單的能見度
c當日誌反白顯示時,將選取範圍複製到系統剪貼簿
u/d向上和向下捲動日誌 ud

與任務互動

您的一些工具可能允許您在其中輸入內容。範例包括 Drizzle ORM 的互動式遷移或 Jest 的測試套件篩選和重新執行。

您可以與標記為互動式的任務互動,以向它們提供輸入。

快速鍵動作
i開始互動
Ctrl+z停止互動

監看模式

許多工具都有內建的監看器,例如 tsc --watch,它會回應原始碼中的變更。但是,有些工具沒有。

turbo watch 為任何工具新增了感知依賴性的監看器。原始碼的變更將遵循您在 turbo.json 中描述的任務圖,就像您的所有其他任務一樣。

例如,使用類似 create-turbo 的套件結構,以及下列任務和腳本

turbo.json
{
  "tasks": {
    "dev": {
      "persistent": true,
      "cache": false
    },
    "lint": {
      "dependsOn": ["^lint"]
    }
  }
}

當您執行 turbo watch dev lint 時,您會看到每當您變更原始碼時,lint 腳本都會重新執行,即使 ESLint 沒有內建的監看器。turbo watch 也知道內部依賴項,因此 @repo/ui 中的程式碼變更將在 @repo/uiweb 中重新執行任務。

web 中的 Next.js 開發伺服器和 @repo/ui 中 TypeScript 編譯器的內建監看器將繼續照常運作,因為它們標記為 persistent

如需更多資訊,請造訪 turbo watch 參考

限制

關閉任務

在某些情況下,您可能想要在 dev 任務停止時執行腳本。當 turbo 在您的 dev 任務結束時退出時,Turborepo 無法在退出時執行這些關閉腳本。

相反地,建立一個 turbo dev:teardown 腳本,在您退出主要的 turbo dev 任務後單獨執行它。

下一步

一旦您擁有您想要部署的應用程式版本,就該學習如何在 Turborepo 中設定環境變數了。

小時

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

本頁內容