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=e2eNx 如何确定受影响的内容
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 resetNx 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 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 React 应用创建 Nx Monorepo
- 共享库与内部包
- Nx 受影响命令与缓存
- 代码生成器与工作区自动化