turbo watch

根据代码变更重新运行仓库中的任务。

Terminal
turbo watch [tasks]

turbo watch 是依赖感知的,意味着任务将按照 turbo.json 中配置的顺序重新运行。

如果未提供任务,turbo 将显示存储库中包可用的任务。

Terminal
turbo watch

turbo watch 与持久任务一起使用

持久任务标记为 "persistent": true,这意味着它们不会退出。因此,它们不能在任务图中被依赖。

这意味着使用 turbo watch 时将忽略持久任务,其工作方式与 turbo run 相同,允许同时运行持久和非持久任务。

依赖感知的持久任务

当你的脚本有内置的监视器(如 next dev)能够检测依赖项中的变化时,你不需要使用 turbo watch。相反,使用脚本的内置监视器,并使用 "persistent": true 将任务标记为长时间运行。

没有依赖感知的持久任务

有些工具不是单体仓库友好的,不会热重载依赖项中的模块。在这些情况下,你应该将任务标记为 interruptible: true,以便 turbo watch 在检测到相关变化时重新启动任务。

限制

缓存

在监视模式下缓存任务目前是实验性的,使用 --experimental-write-cache 标志。

Terminal
turbo watch your-tasks --experimental-write-cache

任务输出

如果你有将文件写入源代码控制的任务,监视模式可能会在无限循环中运行。这是因为监视模式监视你的文件变化,并将在已更改的包中重新运行任务。如果任务创建了变化,那么将再次触发该任务。

监视模式使用文件哈希有一些逻辑来防止这种情况发生,但它并非万无一失。为避免此问题,我们建议从 git 中删除任何任务输出。