用途:本资料是 Nx 单体仓库(monorepo)开发的实践指南,Nx 被描述为面向 monorepo 的智能、快速、可扩展构建系统,用于组织多项目代码库、配置项目、生成代码并优化构建与测试流程。
主要能力与约定:项目结构上,apps/ 存放应用项目(Web 应用、API、移动应用),libs/ 存放库项目(共享代码、功能、工具);命名采用 scope-type-name 模式(如 shared-ui-button),相关库归入 feature 文件夹。工作区配置使用 nx.json 设置全局项,如 targetDefaults 中为 build 配置 dependsOn 与 cache、为 test 配置 cache,以及 defaultBase;项目级配置使用 project.json,定义 name、sourceRoot、projectType(application 或 library)、tags 与 targets。
代码生成:使用 Nx 生成器统一脚手架,例如 nx g @nx/react:app my-app、nx g @nx/react:lib my-lib、nx g @nx/react:component my-component --project=my-lib,可用 --dry-run 预览变更,也可创建自定义生成器。
模块边界:通过 ESLint 的 @nx/enforce-module-boundaries 规则与 depConstraints 定义项目类型和 scope 之间的依赖约束。
缓存与任务执行:启用计算缓存,可配置 Nx Cloud 做分布式缓存与任务执行;使用 nx affected:build、nx affected:test、nx affected:lint 仅运行受影响项目;用 nx build my-app、nx run-many -t build、nx affected -t test 执行任务,并配置任务流水线与并行执行。
测试与 CI/CD:单元测试用 Jest 配合 Nx 预设,E2E 用 Cypress 或 Playwright,UI 库做组件测试,CI 中用 nx affected:test;CI 可结合 Nx Cloud 与 GitHub Actions,例如使用 nrwl/nx-set-shas@v4 并运行 nx affected -t lint test build。
最佳实践与限制:保持应用轻薄、逻辑下沉到库,创建共享工具库,使用 barrel 导出(index.ts),规范类型导出并记录库用途与公共 API,可用 Nx Console VS Code 扩展与 nx graph 查看依赖图。资料未提供具体版本要求、收费与价格、平台支持范围及性能数据,这些暂未提供。