nx-workspace-architecture
Guide structuring new features in Nx workspaces. Use when user asks about creating libraries, organizing code, or where to place new features.
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Nx Workspace Architecture
Core Principles
- Domain over Technical - organize by business domains (products, orders, checkout), not technical types (components, services)
- Thin App Shell - apps are deployment containers; business logic lives in libs
- Explicit Boundaries - use Nx projects to enforce separation, not just folders
Library Types
| Prefix | Purpose | Can Import |
|---|---|---|
feat-* |
Smart components, pages, business logic | feat, ui, data-access, util |
ui-* |
Presentational/dumb components | ui, util |
data-access |
API calls, state management | data-access, util |
util |
Pure functions, helpers, types | util only |
Folder Structure
packages/
├── {domain}/ # e.g. products, orders, checkout
│ ├── data-access/
│ ├── feat-{name}/
│ ├── ui-{name}/
│ └── util/
└── shared/ # cross-domain utilities
Tagging Strategy
Add to project.json:
-
scope:{domain}- vertical boundary (products, orders, shared) -
type:{library-type}- horizontal layer (feature, ui, data-access, util)
Decision Flow
When user wants to add new functionality:
- Identify domain - which business area does it belong to?
-
Determine library type:
- Has routing/pages? →
feat-* - Purely visual component? →
ui-* - API/state logic? →
data-access - Pure utilities? →
util
- Has routing/pages? →
- Check existing libs - can it extend an existing library?
- Create new lib only if needed for clear separation
When to Split Libraries
Split when you observe:
- Frequent cross-library changes for single features
- Circular dependencies emerging
- Unclear ownership between teams
- Single lib growing too large (>20 files is a smell)
Generator Commands
Use the nx-generators skill.
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!