跳过任务
缓存可以显著加快你的任务速度 - 但通过使用 npx turbo-ignore
你可能会更快。如果工作空间不受你的代码更改影响,你可以完全跳过执行任务。
假设你想在 web
工作空间没有任何更改(或其包依赖)时跳过其单元测试。如果你已经在使用远程缓存,你可能会获得缓存命中 - 但你仍然会花时间配置 CI 容器、安装 npm
依赖,以及其他可能需要一段时间的事情。
理想情况下,你应该先快速检查是否需要进行任何这些工作。
在你检出仓库之后,但在任何其他工作之前,你可以花几秒钟时间检查你的 web
测试是否自父提交以来发生了变化。
这个命令将:
- 过滤
web
工作空间。 - 为你的
test
任务创建与父提交相比的dry
输出。 - 解析输出以确定哪些包已更改。
- 如果检测到更改,则以
1
代码退出。否则,以0
退出。
虽然你可能已经为这个任务获得了 >>> FULL TURBO
缓存命中,但你刚刚节省了运行 CI 所需的所有其他设置任务的时间。
使用 turbo-ignore
要跳过不受影响的工作,首先确保机器上有 Git 历史记录。然后,运行 npx turbo-ignore
。
turbo-ignore
使用 --filter
和 --dry=json
标志的组合来查找从父提交到当前提交的更改,以识别受影响的包。默认情况下,turbo-ignore
会查找当前工作目录中构建任务的差异,但你可以使用标志自定义此行为。
这是将要构建和运行的命令示例:
注意,dry run 不会执行构建任务。相反,它只需几秒钟就能检查你的包,看看你的代码更改是否会影响你的构建(或其他任务)。
如果 turbo-ignore
发现任务可以跳过,它将以 0
代码退出进程。如果发现更改,进程将以 1
退出。
自定义行为
要指定工作空间,你可以将其添加到你的命令中,如:
其中 web
是你的工作空间名称,运行默认的 build
任务。
如果你想更改任务,使用 --task
标志来指定 turbo-ignore
将调用的命令的任务。
在 Vercel 上使用 turbo-ignore
要在 Vercel 上使用 npx turbo-ignore
,你可以使用忽略构建步骤功能。Vercel 将自动推断正确的参数以成功运行 turbo-ignore
。
自定义行为
当不在 Vercel 上时,使用 --fallback
标志指定用于比较的提交。
在 Vercel 上,你可以指定 --fallback
标志,在默认比较不可用时给 Vercel 一个用于比较的 git ref。默认情况下,Vercel 会与最近部署的 SHA 进行比较,所以这对于避免首次提交到分支时的部署等用例很有用。