跳过任务
缓存可以显著加快你的任务执行速度 - 但你或许可以通过使用 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 ref 来进行比较。默认情况下,Vercel 会与最近部署的 SHA 进行比较,因此这对于避免在首次提交到分支时进行部署的用例非常有用。
这有帮助吗?