0Pricing
React Academy · 课时

Nx 受影响命令与缓存

仅运行受变更影响的测试和构建,并使用 Nx Cloud 分布式缓存加速 CI。

Nx 受影响命令与缓存 是 CoddyKit 上的免费 React Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 React Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 React Academy 课程共包含 4 节课。

受影响项目的概念

Nx 会跟踪单体仓库的依赖关系图。当您更改文件时,Nx 会计算哪些项目受到影响(直接被修改,或依赖于已修改的项目),并且只为这些项目运行任务。

运行受影响项目的测试

只运行自主分支以来因更改而受到影响的项目的测试。

# Compare to main branch:
npx nx affected --target=test --base=origin/main --head=HEAD

# Shorthand (uses nx.json defaultBase):
npx nx affected --target=test

运行受影响项目的构建

只构建受影响的项目——这对于持续集成至关重要,可以避免每次拉取请求都重新构建整个单体仓库。

npx nx affected --target=build

# With parallel workers:
npx nx affected --target=build --parallel=3

受影响项目的代码检查和端到端测试

将相同的模式应用于代码检查和端到端测试。

npx nx affected --target=lint
npx nx affected --target=e2e

Nx 如何确定受影响的内容

Nx 会对所有源文件、package.json 文件和配置文件进行哈希处理。如果项目自身的任何文件发生更改,或者它所导入的任何项目发生更改,该项目就会受到影响。

本地计算缓存

Nx 会将任务输出(构建产物、测试结果)缓存到 .nx/cache 中。使用未更改的输入再次运行相同任务时,会立即从缓存中恢复结果——甚至终端日志也会被重新输出。

# First run (builds):
$ npx nx build web  → Builds in 28s, cached

# Second run (no changes):
$ npx nx build web  → Cache hit! [existing outputs match] 0ms

# Clear cache if needed:
$ npx nx reset

Nx Cloud 远程缓存

Nx Cloud 会在团队成员和持续集成之间共享缓存。如果同事已经使用相同的输入构建了某个项目,您的持续集成就会命中远程缓存,而不必重新构建,即使使用的是全新机器。

# Connect workspace to Nx Cloud:
npx nx connect-to-nx-cloud

# Set CI environment variable:
# NX_CLOUD_ACCESS_TOKEN=<token>

缓存输入配置

在 project.json 中配置某个目标的缓存输入文件。排除不会影响构建输出的文件(例如 README、测试夹具),以最大限度地提高缓存命中率。

// project.json
{
  "targets": {
    "build": {
      "inputs": [
        "default",  // source files
        "^default"  // upstream dependency source files
      ],
      "outputs": ["{workspaceRoot}/dist/apps/web"]
    }
  }
}

任务分发(Nx Agents)

Nx Cloud Agents 会将受影响的任务并行分配到多台持续集成机器上,从而显著减少大型单体仓库的持续集成耗时。

Nx Console VS Code 扩展

Nx Console 扩展提供了一个 GUI,可用于运行 Nx 命令、可视化项目关系图和生成代码,无需记忆 CLI 标志。

可视化任务关系图

nx graph --task=build 会显示任务依赖关系图,包括哪些任务依赖于其他任务,有助于理解构建顺序。

npx nx graph --task=build

快速检查

什么因素决定 Nx 任务是否命中缓存?

回顾

nx affected --target=X 只会为发生更改的项目及其依赖项目运行任务。Nx 通过对输入进行哈希处理来缓存输出,并立即重新输出结果。Nx Cloud 将此功能扩展为跨机器共享的远程缓存。使用 --parallel=N 并发运行任务,以加快持续集成。

常见问题解答

「Nx 受影响命令与缓存」课时是免费的吗?

是的 — 「Nx 受影响命令与缓存」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 React Academy 课程的其余内容,请升级到 CoddyKit PRO。 React Academy 课程共包含 4 节课。

「Nx 受影响命令与缓存」这节课中我会学到什么?

仅运行受变更影响的测试和构建,并使用 Nx Cloud 分布式缓存加速 CI。 你通过在浏览器中直接运行的动手代码来练习 React Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 React Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 React Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「Nx 受影响命令与缓存」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 React Academy 课中编写并运行代码吗?

能。每节 React Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 React 应用创建 Nx Monorepo
  2. 共享库与内部包
  3. Nx 受影响命令与缓存
  4. 代码生成器与工作区自动化
← 返回 React Academy