watch
根據程式碼變更,重新執行儲存庫中的任務。
turbo watch
具有相依性感知能力,表示任務會依照 turbo.json
中設定的順序重新執行。
如果未提供任何任務,turbo
會顯示儲存庫中套件可用的任務。
搭配持續性任務使用 turbo watch
持續性任務會標記為 "persistent": true
,表示它們不會結束。因此,它們無法在您的任務圖表中被依賴。
這表示使用 turbo watch
時,持續性任務將會被忽略,其運作方式與 turbo run
相同,允許同時執行持續性和非持續性任務。
具有相依性感知能力的持續性任務
當您的指令碼具有內建的監看器 (例如 next dev
) 能夠偵測相依性變更時,您不需要使用 turbo watch
。而是使用指令碼的內建監看器,並使用 "persistent": true
將任務標記為長時間執行。
不具相依性感知能力的持續性任務
某些工具不適用於 monorepo,且不會熱重載相依性中的模組。在這些情況下,您應該將任務標記為 interruptible: true
,讓 turbo watch
在偵測到相關變更時重新啟動任務。
限制
快取
目前 Watch Mode 的快取任務功能為實驗性功能,需使用 --experimental-write-cache
旗標。
任務輸出
如果您的任務會寫入簽入原始碼控制的檔案,Watch Mode 可能會無限迴圈執行。這是因為 Watch Mode 會監看您的檔案是否變更,並在已變更的套件中重新執行任務。如果任務建立變更,則會再次觸發該任務。
Watch Mode 有一些邏輯可使用檔案雜湊來防止這種情況發生,但並非萬無一失。為了避免這個問題,我們建議從 git 中移除任何任務輸出。