Monorepo 工程组织:pnpm + Nx

Monorepo 的工程组织:pnpm workspace 管理依赖和包链接,Nx 做任务编排和构建缓存,共享包设计。

#type / concept #status / growing #tech / dev / frontend / eng

[!info] related notes

Monorepo 工程组织:pnpm + Nx

为什么 Monorepo

多服务项目(前端 + 后端 + AI 服务)放在同一个仓库:

  • 跨服务协调更容易(一个 PR 改前后端)
  • 共享类型定义(contracts 包)
  • 统一 CI/CD 流程

pnpm workspace

# pnpm-workspace.yaml
packages:
  - packages/*
  - apps/web
  • packages/*: 共享包(contracts、utils)
  • apps/web: 前端项目
  • Go 和 Python 不通过 pnpm 管理,但可以通过 Nx 参与任务编排

Nx 的价值

能力说明
任务编排依赖图决定执行顺序(先 build 依赖包)
构建缓存相同输入跳过重复执行
增量执行affected 只跑变更项目
{
  "targetDefaults": {
    "build": {
      "dependsOn": ["^build"],  // 先构建依赖
      "cache": true
    }
  }
}

Go/Python 纳入 Nx

通过自定义 target 参与任务编排:

{
  "targets": {
    "serve": { "command": "go run cmd/server/main.go", "cwd": "apps/api" },
    "test": { "command": "go test ./...", "cwd": "apps/api" }
  }
}

常用命令

pnpm dev                    # 并行启动所有服务
pnpm build                  # 构建所有项目
pnpm affected:test          # 只跑变更项目的测试
pnpm graph                  # 查看依赖关系图
创建于 2026/6/25 更新于 2026/6/25