跳过任务
缓存 显著加速了你的任务 - 但你可能可以通过使用 npx turbo-ignore
来更快地完成。如果一个工作区不受你的代码更改影响,你可以完全跳过执行任务。
假设你想在你的 web
工作区的单元测试在你的 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
退出。
在 Vercel 上,将使用先前部署的 SHA 而不是父提交。
自定义行为
要指定工作区,你可以将其添加到你的命令中,例如
其中 web
是你的工作区的名称,运行默认的 build
任务。
如果你想更改任务,请使用 --task
标志来指定 turbo-ignore
将调用的命令的任务。
在 Vercel 上使用 turbo-ignore
要在 Vercel 上使用 npx turbo-ignore
,你可以使用忽略构建步骤功能。 Vercel 将自动推断正确的参数以成功运行 turbo-ignore
。
自定义行为
当不在 Vercel 上时,使用 --fallback
标志指定用于比较的提交。
在 Vercel 上,你可以指定 --fallback
标志,以便在默认比较不可用时,为 Vercel 提供一个 git 引用以进行比较。默认情况下,Vercel 会与最近部署的 SHA 进行比较,因此这对于避免首次提交到分支的部署等用例很有用。