nx-workspace-patterns

配置并优化Nx单仓库工作区。适用于设置Nx、配置项目边界、优化构建缓存或实现受影响的命令时使用。

作者

安装

热度:2

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=sickn33-skills-nx-workspace-patterns&locale=zh&source=copy

Nx Workspace Patterns - Nx Monorepo 工作区配置与优化指南

技能概述


Nx Workspace Patterns 提供生产级 Nx monorepo 工作区的配置模式和最佳实践,帮助开发者高效管理多应用项目、优化构建缓存、配置模块边界,并通过受影响命令加速 CI/CD 流程。

适用场景

1. 设置新的 Nx 工作区


当你需要从零开始创建 Nx monorepo 项目时,此技能提供完整的架构指导,包括 apps/libs 目录规划、项目标签定义、以及 nx.json 核心配置。涵盖 React、Angular、Node.js 等多种技术栈的工作区初始化。

2. 配置项目边界与依赖规则


当团队规模扩大、代码库复杂度增加时,通过模块边界规则强制执行架构约束。定义 type:feature、type:ui、type:data-access 等库类型标签,防止循环依赖,确保代码依赖关系清晰可控。

3. 优化 CI 流水线与构建缓存


当 CI 时间过长影响开发效率时,通过受影响命令(affected commands)仅测试和构建变更项目,结合 Nx Cloud 或自托管远程缓存,可显著缩短 CI 时间,提升团队交付速度。

核心功能

1. 工作区架构设计


提供标准化的 Nx 工作区目录结构模板,包含 apps(可部署应用)、libs(共享库)、tools(自定义执行器和生成器)的组织方式。定义五种核心库类型:feature(业务逻辑)、ui(展示组件)、data-access(数据访问)、util(工具函数)、shell(应用启动),确保项目职责清晰。

2. 模块边界强制


通过 ESLint 插件 enforce-module-boundaries 规则,在代码层面强制执行依赖约束。例如:type:app 只能依赖 feature/ui/data-access/util 库,type:util 不能依赖任何其他库类型。配合项目标签(scope:web/api/shared)实现跨维度的架构治理。

3. 缓存与 CI 优化


配置可缓存操作(build、lint、test、e2e),通过 namedInputs 精确控制缓存失效条件。集成 GitHub Actions 的 CI 模板,使用 nx affected 命令并行执行任务,支持 Nx Cloud 远程缓存和 AWS S3 自托管缓存方案。

常见问题

Nx monorepo 是什么?适合我的项目吗?


Nx 是一个构建系统,专为 monorepo(单体仓库)设计,允许在一个仓库中管理多个应用程序和共享库。如果你的团队有多个相关的前端项目、共享 UI 组件库、或需要统一的 CI/CD 流程,Nx 能显著提升开发效率。相比 Lerna 或 Turborepo,Nx 提供更强大的依赖图分析和智能缓存功能。

如何配置 Nx 的模块边界规则?


在项目根目录的 .eslintrc.json 中配置 @nx/enforce-module-boundaries 规则。首先为每个项目定义 tags(如 type:feature, scope:web),然后在 depConstraints 中定义依赖约束。例如:sourceTag 为 "type:ui" 的项目只能依赖 "type:ui" 和 "type:util" 的库。配置完成后,ESLint 会在开发时实时检测违规的依赖导入。

Nx 受影响命令如何加速 CI?


传统 CI 会对所有项目运行测试和构建,即使大部分代码没有变化。nx affected 命令通过对比当前分支与基准分支(如 main),仅检测和执行受影响项目的任务。结合 --parallel 参数并行执行,可大幅缩短 CI 时间。例如:npx nx affected -t build --parallel=3 仅构建变更的项目及其依赖项。