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