開發應用程式
在單一儲存庫中開發應用程式可釋放強大的工作流程,讓您能對原始碼控制進行原子提交,並輕鬆存取程式碼。
大多數開發任務都是長時間執行的任務,會監看程式碼的變更。Turborepo 透過強大的終端 UI 和其他功能(例如)來增強這種體驗
設定開發任務
在 turbo.json
中定義開發任務會告知 Turborepo 您將執行長時間執行的任務。這適用於執行開發伺服器、執行測試或建置應用程式等作業。
若要註冊 dev
任務,請將其新增至您的 turbo.json
中,並包含兩個屬性
- "cache": false:告知 Turborepo 不要嘗試快取任務的結果。由於這是開發任務,因此您可能會頻繁地變更程式碼,因此快取結果並無用處。
- "persistent": true:告知 Turborepo 讓任務保持執行,直到您停止它為止。此金鑰是終端 UI 將任務視為長時間執行且互動式的訊號。此外,它可防止您意外依賴不會結束的任務。
您現在可以執行 dev
任務以平行啟動開發指令碼
與任務互動
某些指令碼允許您使用 stdin
輸入來與其互動。使用終端 UI,您可以選取任務、輸入它,並像平常一樣使用 stdin
。
任務必須是互動式才能啟用此功能。
在 dev
之前執行設定任務
您可能也會想要執行設定開發環境或預先建置套件的指令碼。您可以使用 dependsOn
來確保這些任務在 dev
任務之前執行
在此範例中,我們使用的是根任務,但您可以將相同的概念用於套件中的任意任務。
執行特定的應用程式
--filter
旗標可讓您選取套件圖的子集,以便您可以針對特定應用程式及其相依性執行 dev
任務
監看模式
許多工具都有內建監看器,例如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
任務停止時執行指令碼。Turborepo 無法在結束時執行這些終止指令碼,因為當您的 dev
任務結束時,turbo
會結束。
相反地,請建立一個 turbo dev:teardown
指令碼,在您結束主要 turbo dev
任務後單獨執行它。
後續步驟
當您擁有想要部署的應用程式版本後,就該學習如何在 Turborepo 中設定環境變數了。
這有幫助嗎?