跳过任务
缓存 可以显著加速你的任务 - 但你或许可以通过使用 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
查找当前工作目录中的构建任务的差异,但你可以使用标志自定义此行为。
以下是将被构建和运行的命令示例
请注意,空运行不会执行构建任务。相反,它会在几秒钟内检查你的包,以查看你的代码更改是否会影响你的构建(或其他任务)。
如果 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 进行比较,因此这对于避免分支的首次提交部署等用例非常有用。