Cộng đồng Upskills
Upskills
upskills.dev
Tham gia cộng đồng Discord để được hỗ trợ về các bài hướng dẫn và đặt câu hỏi.
Vu Nguyen
@nphivu414
Theo dõi tôi trên X để nhận cập nhật và tin tức mới nhất về Upskills.
Đây là Phần 2 của series NX Monorepo. Sau khi hiểu các concepts kiến trúc từ Phần 1, giờ là lúc áp dụng kiến thức đó bằng cách xây dựng NX workspace của riêng bạn từ đầu.
Làm theo từng bước với hướng dẫn framework-agnostic hoạt động với bất kỳ tech stack nào—React, Angular, Vue, Node.js, hoặc bất kỳ framework nào được hỗ trợ bởi NX plugins.
Yêu cầu
monorepo/├── apps/ # Thin, deployable entry points│ ├── web-app/ # Main Web App│ ├── mobile-app/ # Main Mobile app│ ├── api-server/ # Nodejs Backend API│ └── admin-dashboard/ # Admin App│├── libs/ # Where the actual code lives│ ├── web-modules/ # App-specific feature modules│ │ └── src/│ │ ├── feature-auth/│ │ ├── feature-dashboard/│ │ └── feature-settings/│ ├── ui/ # Shared UI components│ │ └── src/│ │ ├── button/│ │ ├── card/│ │ └── modal/│ ├── shared/ # Shared types, utils, constants│ │ └── src/│ │ ├── types/│ │ ├── utils/│ │ └── constants/│ └── db/ # Database layer│ └── src/│ ├── prisma/│ └── queries/│├── tools/ # Custom scripts and generators├── nx.json # NX workspace configuration├── tsconfig.base.json # Path aliases configuration└── package.json # Dependencies and scripts
Nội dung bài hướng dẫn
8 phần • khoảng 2 giờ
Chào mừng đến với Phần 2 của series NX Monorepo! Trong Phần 1, chúng ta đã cover các architecture concepts và patterns. Giờ là lúc đưa kiến thức đó vào thực tế bằng cách build NX workspace của riêng bạn từ đầu.
Chúng ta sẽ Build gì
Đến cuối hướng dẫn này, bạn sẽ tạo được một NX workspace được cấu hình đầy đủ với:
Mở terminal và chạy lệnh:
npx create-nx-workspace@latest
Lệnh interactive này sẽ hướng dẫn bạn qua các bước:
my-org)Hiểu về Presets
| Preset | Lệnh | Phù hợp nhất cho |
|---|---|---|
| apps | --preset=apps | Workspace trống để thêm technologies dần dần |
| ts | --preset=ts | TypeScript setup tối thiểu, linh hoạt tối đa |
| react | --preset=react | React application với Vite hoặc Webpack |
| next | --preset=next | Next.js application |
| express | --preset=express | Express backend application |
| angular | --preset=angular | Angular application |
Trong tutorial này, chúng ta recommend bắt đầu với apps preset để có sự linh hoạt tối đa:
npx create-nx-workspace@latest my-org --preset=apps
Sau khi tạo, workspace của bạn sẽ trông như thế này:
my-org/├── apps/ # Applications của bạn nằm ở đây├── libs/ # Libraries của bạn nằm ở đây (sẽ tạo sau)├── nx.json # NX workspace configuration├── tsconfig.base.json # Shared TypeScript config & path aliases├── package.json # Dependencies và scripts└── .gitignore
Trước khi bắt đầu build, hãy setup các tools giúp bạn productive hơn.
1. NX Console (VSCode Extension)
NX Console cung cấp giao diện trực quan cho tất cả các NX operations:
Ctrl+Shift+X / Cmd+Shift+X)Các tính năng chính:
2. NX MCP Server (AI Assistant Integration)
Nếu bạn sử dụng AI assistants như Claude hoặc Cursor, NX MCP Server cho phép chúng hiểu workspace của bạn:
# Install globallynpm install -g nx-mcp# Or add to your projectnpm install -D nx-mcp

Nguồn: NX
Những tiến bộ gần đây trong AI (như Cursor, Windsurf, và MCP servers) đã thay đổi cách chúng ta làm việc với monorepos. Nx có vị thế độc đáo để tận dụng điều này vì:
Tuy nhiên, chúng ta không thể chỉ dựa vào AI.
Để thực sự tận dụng các công cụ này, ta phải hiểu các cốt lõi quan trọng của Nx:
Tutorial này được thiết kế để cung cấp cho bạn kiến thức sâu sắc đó. Chúng tôi không chỉ đưa cho bạn các lệnh copy-paste; chúng ta đang xây dựng mental model về Nx để bạn có thể tự tin chỉ đạo các AI agents xây dựng các architectures phức tạp, scalable.
Cấu hình cho Claude Desktop (claude_desktop_config.json):
{"mcpServers": {"nx-mcp": {"command": "npx","args": ["-y", "nx-mcp"],"cwd": "/path/to/your/nx-workspace"}}}
Section 1: Tạo Workspace của bạn
Về tác giả
NAB, Software Engineer
Hi, I'm Vu, a Software Engineer at NAB (National Australia Bank) with a love for creating web and mobile apps that don't just look cool but feel great to use. I've had the chance to work with some awesome companies over the years, picking up new tricks and tackling many kinds of challenges along the way.
Now, I'm thrilled to share what I've learned and help others through fun, interactive coding tutorials!