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 中删除任何任务输出。