Turborepo

跳过任务

缓存可以显著加快你的任务执行速度 - 但你或许可以通过使用 npx turbo-ignore 来进一步提高速度。如果你的代码更改没有影响到某个工作区,你可以完全跳过该任务的执行。

假设你希望在你的 web 应用程序(或其包依赖项)没有任何更改时跳过 web 工作区的单元测试。如果你已经在使用远程缓存,你可能会获得缓存命中 - 但你仍然需要花费时间来配置 CI 容器、安装 npm 依赖项以及其他可能需要一段时间的事情。

理想情况下,你会先快速检查一下是否需要进行任何这些工作。


在你检出仓库之后,但在任何其他工作**之前**,你可以花几秒钟来检查你的 web 测试自父提交以来是否发生了更改。

终端
npx turbo-ignore web --task=test

此命令将:

  1. 筛选 web 工作区。
  2. 创建与父提交相比,你的 test 任务的 dry 输出。
  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 上,你可以指定 --fallback 标志,以便在默认比较不可用时,为 Vercel 提供一个 git ref 来进行比较。默认情况下,Vercel 会与最近部署的 SHA 进行比较,因此这对于避免在首次提交到分支时进行部署的用例非常有用。

小时

节省的计算总时间
开始使用
远程缓存 →

本页内容