Repo
Docs
核心概念
在 CI 中跳过任务

跳过任务

构建缓存 可以极大地加快您的任务速度 - 但您可以通过使用 npx turbo-ignore 做得更好。如果您的工作区不受代码更改的影响,您可以完全跳过执行任务。

假设您想跳过 web 工作区的单元测试,只要您的 web 应用程序(或其包依赖项)没有更改。如果您已经使用 远程缓存 (在新标签页中打开),您可能会获得缓存命中,但您仍然会花费时间配置 CI 容器,安装 npm 依赖项,以及其他可能需要一段时间才能完成的操作。

理想情况下,我们会快速检查一下是否需要执行这些操作。

在检出仓库后,但在执行任何其他操作之前,我们可以花几秒钟检查一下我们的 web 测试自父提交以来是否发生了变化。

npx turbo-ignore web --task=test

此命令将

  1. 过滤 web 工作区。
  2. 创建 dry 输出,用于与父提交相比的 test 任务。
  3. 解析输出以确定哪些包发生了更改。
  4. 如果检测到更改,则以 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 退出。

在 Vercel 上,将使用之前部署的 SHA 而不是父提交。

自定义行为

要指定工作区,您可以将其添加到您的命令中,例如

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 进行比较,因此这对于避免对分支的第一次提交进行部署等用例很有用。