開發應用程式
在 Monorepo 中開發應用程式,能解鎖強大的工作流程,讓您對原始碼控制進行原子提交,並輕鬆存取程式碼。
大多數開發任務都是長時間執行的任務,會監看程式碼變更。Turborepo 透過強大的終端 UI 和其他功能(例如)來強化此體驗
設定開發任務
在 turbo.json
中定義開發任務,會告知 Turborepo 您將執行長時間運行的任務。這對於執行開發伺服器、執行測試或建置應用程式等很有用。
若要註冊 dev
任務,請將其新增至具有兩個屬性的 turbo.json
- "cache": false:告訴 Turborepo 不要嘗試快取任務的結果。由於這是開發任務,您可能會頻繁變更程式碼,因此快取結果沒有用處。
- "persistent": true:告訴 Turborepo 保持任務運行直到您停止它。此鍵作為終端 UI 將任務視為長時間運行且互動式的訊號。此外,它可以防止您意外地依賴不會結束的任務。
您現在可以執行 dev
任務以平行啟動您的開發腳本
在 dev
之前執行設定任務
您可能也想要執行設定您的開發環境或預先建置套件的腳本。您可以使用 dependsOn
確保這些任務在 dev
任務之前執行
在此範例中,我們使用的是根任務,但您可以對套件中的任意任務使用相同的概念。
執行特定的應用程式
--filter
標記可讓您挑選 套件圖 的子集,以便您可以針對特定應用程式及其依賴項執行 dev
任務
使用終端 UI
Turborepo 的終端 UI 啟用許多功能,可圍繞您的任務建立高度互動式的體驗。
自訂您的檢視畫面
您可以使用快速鍵快速調整 UI 以滿足您的需求。
快速鍵 | 動作 |
---|---|
m | 切換彈出視窗以列出快速鍵 |
↑ /↓ | 選取任務清單中的下一個/上一個任務 |
j /k | 選取任務清單中的下一個/上一個任務 |
p | 切換選取任務的釘選 |
h | 切換任務清單的能見度 |
c | 當日誌反白顯示時,將選取範圍複製到系統剪貼簿 |
u /d | 向上和向下捲動日誌 u 和 d |
與任務互動
您的一些工具可能允許您在其中輸入內容。範例包括 Drizzle ORM 的互動式遷移或 Jest 的測試套件篩選和重新執行。
您可以與標記為互動式的任務互動,以向它們提供輸入。
快速鍵 | 動作 |
---|---|
i | 開始互動 |
Ctrl+z | 停止互動 |
監看模式
許多工具都有內建的監看器,例如 tsc --watch
,它會回應原始碼中的變更。但是,有些工具沒有。
turbo watch
為任何工具新增了感知依賴性的監看器。原始碼的變更將遵循您在 turbo.json
中描述的任務圖,就像您的所有其他任務一樣。
例如,使用類似 create-turbo
的套件結構,以及下列任務和腳本
當您執行 turbo watch dev lint
時,您會看到每當您變更原始碼時,lint
腳本都會重新執行,即使 ESLint 沒有內建的監看器。turbo watch
也知道內部依賴項,因此 @repo/ui
中的程式碼變更將在 @repo/ui
和 web
中重新執行任務。
web
中的 Next.js 開發伺服器和 @repo/ui
中 TypeScript 編譯器的內建監看器將繼續照常運作,因為它們標記為 persistent
。
如需更多資訊,請造訪 turbo watch
參考。
限制
關閉任務
在某些情況下,您可能想要在 dev
任務停止時執行腳本。當 turbo
在您的 dev
任務結束時退出時,Turborepo 無法在退出時執行這些關閉腳本。
相反地,建立一個 turbo dev:teardown
腳本,在您退出主要的 turbo dev
任務後單獨執行它。
下一步
一旦您擁有您想要部署的應用程式版本,就該學習如何在 Turborepo 中設定環境變數了。