跳过任务
缓存可以极大地加快您的任务速度——但您可以通过使用 npx turbo-ignore 来获得更快的速度。如果某个工作区未受代码更改的影响,您可以完全跳过任务的执行。
假设您想在 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 会查找 **当前工作目录中 build 任务** 的差异,但您可以通过 标志来自定义此行为。
下面是一个将被构建和运行的命令示例
请注意,干运行 **不会** 执行 build 任务。相反,它会检查您的包,看看您的代码更改是否会在短短几秒钟内影响您的 build(或其他任务)。
如果 turbo-ignore 发现任务可以跳过,它将以 0 代码退出进程。如果发现了更改,进程将以 1 退出。
在 Vercel 上,将使用先前部署的 SHA 代替父提交。
自定义行为
要指定工作区,您可以将其添加到您的命令中,如下所示
其中 web 是您的工作区名称,运行默认的 build 任务。
如果您想更改任务,请使用 --task 标志来指定 turbo-ignore 将调用的命令的任务。
在 Vercel 上使用 turbo-ignore
要在 Vercel 上使用 npx turbo-ignore,您可以使用 Ignored Build Step 功能。Vercel 将自动推断正确的参数以成功运行 turbo-ignore。
自定义行为
在 Vercel 之外,使用 --fallback 标志指定一个用于比较的提交。
在 Vercel 上,您可以指定 --fallback 标志,为 Vercel 提供一个 Git ref 以供比较,当默认比较不可用时。默认情况下,Vercel 会与最近部署的 SHA 进行比较,因此这对于避免在首次提交到分支时进行部署等用例很有用。