0
· FRONTEND-2026-RADAR · 2026.05.05 · 9 MIN ·

Monorepo 2026:pnpm catalogs / Nx 21 / Turborepo 2.6 / Moon 2 / Vite+ vp

pnpm 11 workspace catalogs(`catalog:` 协议)成事实标准;Nx 21 + AI/MCP;Turborepo Boundaries 替代 Nx tags;Moon 2.0 与 Vite+ vp 的新选项。中文解读 + 译者点评。 · by fancyoung
AI · HERO seed:3320260505 pnpm 11 workspace catalogs(`catalog:` 协议)成事实标准;Nx 21 + AI/MCP;Turborepo Boundaries 替代 Nx tags;Moon 2.0 与 Vite+ vp 的新选项。中文解读 + 译者点评。
FIG.00 — cover · ai-generated · placeholder

影响力:**pnpm 11 workspace catalogs(catalog: 协议)**已成事实标准;Nx 21 + AI / MCP 走”AI-native monorepo”;Turborepo Boundaries 替代 Nx tags 成主流;Moon 2.0 “Phobos” + Vite+ vp 是新兴选项。 干活密度:🟢 干活级

🔥 影响力卡片

  • pnpm 9.5(2024)首发 catalogs,pnpm 10/11 成熟(strict / preferred / manual 三模式)
  • Moon 2.0 “Phobos” = 2026-02-18(Rust polyglot,远程缓存自带 server)
  • Nx 21:Terminal UI(多任务并行 TUI)+ Self-Healing CI(失败任务自动 PR 修复)+ Nx MCP Server
  • Turborepo 2.6+ Boundaries(experimental,但 2026 主流路线)
  • Vite+ Alpha(2026-03-13)vp CLI 一统 Vite + Vitest + Rolldown + tsdown + Oxlint + Oxfmt

🎯 为什么必读

monorepo 选型在 2024 已经是 Turborepo vs Nx 二元;2026 多了几个变量:catalog 协议进入 ecosystem 层(影响 package manager 选择)、AI 集成进入 task runner 层(Nx MCP 是首创)、统一工具链层(Vite+ 试图替代 Turborepo)。

如果你 2026 年内会做 monorepo 选型或现有 monorepo 升级,这一篇能省你 2-3 周的对比时间

一句话总结

2026 monorepo 默认配比 = pnpm 11 + workspace catalogs + Turborepo 2.6 / Nx 21 + changesets + Knip。

💎 金句墙

catalog: is the de facto standard now.”catalog: 已是事实标准。” —— 译者点评:pnpm 9.5 引入,pnpm 10/11 成熟。Bun / Yarn 跟进讨论,npm 暂未原生支持。但实战中”用 pnpm 就开 catalogs”已经成为新项目默认习惯,因为它解决了 monorepo 内 react/ts 等核心库版本漂移这个老问题

“Lerna is dead — Long Live Lerna.” “Lerna 已死 — Lerna 万岁。” —— Nx 团队博客标题。译者点评:这话讲了 Lerna 现状 — 由 Nrwl 接手维护,定位收窄到 OSS 多包发布,app monorepo 应用场景已被 Turbo/Nx 取代

📋 核心精读

1. pnpm workspace catalogs 实战

# pnpm-workspace.yaml
packages:
  - apps/*
  - packages/*

catalog:
  react: ^19.0.0
  react-dom: ^19.0.0
  typescript: ^5.6.0
  zod: ^4.0.0

catalogs:
  react18:
    react: ^18.3.0
    react-dom: ^18.3.0
// apps/web/package.json
{
  "dependencies": {
    "react": "catalog:",         // 用默认 catalog
    "react-dom": "catalog:",
    "typescript": "catalog:"
  }
}

// packages/legacy/package.json
{
  "dependencies": {
    "react": "catalog:react18"   // 用命名 catalog
  }
}

🟢 译者点评:catalog: 是 monorepo 内”统一升级”的最简方案。修一处 pnpm-workspace.yaml,所有 workspace 同步升 React。比 npm overrides 更精确(catalogs 只在 workspace 内,不跨包提升)。

2. Turborepo 2.6 + Boundaries

// turbo.json
{
  "$schema": "https://turbo.build/schema.json",
  "tasks": {
    "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] },
    "test": { "dependsOn": ["build"] }
  },
  "boundaries": {
    "tags": {
      "internal": {
        "dependencies": { "deny": ["public"] }
      }
    }
  }
}
turbo run build --filter=...^         # 受影响的包及其依赖
turbo watch dev                       # 持续监听

🟢 译者点评:Boundaries 仍 experimental,但 2026 是替代 Nx tags / eslint-plugin-boundaries 的主流路线。它检查跨 package 引用 + 未在 dependencies 声明的 import,把”架构守卫”做成 task runner 一等公民。

3. Nx 21 AI 集成

# 创建
npx create-nx-workspace@latest

# AI / MCP
nx mcp --start                        # 启动 Nx MCP server
# 然后在 Cursor / Claude Code / VS Code 加 mcp config 指向它

# Self-Healing CI
nx-cloud configure --self-healing     # 失败任务自动 PR 修复

🟢 译者点评:Nx 21 把 LLM 直接接到 project graph。LLM 通过 MCP 直读 task config / dependency,不再瞎猜。这是 monorepo 工具向 AI agent friendly 进化的第一个实战案例。

4. Moon 2.0 “Phobos”(Rust polyglot)

# .moon/workspace.yml
projects:
  - apps/*
  - packages/*

# apps/web/moon.yml
type: application
language: typescript

tasks:
  build:
    command: 'next build'
    deps: ['^:build']
    inputs: ['src/**', 'next.config.ts']
moon run :build       # 跑所有 :build
moon ci               # CI 模式

🟢 译者点评:Moon 是”polyglot 派”代表(JS/TS/Rust/Go/Ruby 一个 monorepo 跑通)。Rust 写的 task runner,远程缓存自带 server,适合”嫌 Nx 太重 / 嫌 Turbo 太轻”的中型团队。

5. Vite+ vp CLI(Alpha)

vp create             # 交互式建 monorepo
vp dev                # Vite dev server
vp build              # Rolldown
vp test               # Vitest
vp lint               # Oxlint
vp run                # 自动 task graph + caching

🟢 译者点评:Vite+ 试图整体替代 Turborepo(在 Vite/Vitest 项目里)。仍 Alpha,生产慎用,但 side project 完全可以试。

6. changesets + Knip 配套

# changesets 多包发布
npx @changesets/cli init
pnpm changeset
pnpm changeset version
pnpm changeset publish
# Knip(取代 depcheck,2026 默认)
npx knip
npx knip --fix

🟢 译者点评:Knip 是 2026 default。取代 depcheck,monorepo 一等公民,识别 workspace 间依赖。“找出未用 export / 未用 deps”这一类老问题终于有了好工具。

🟢 译者总评

  1. 新项目默认:pnpm 11 + workspace catalogs + Turborepo 2.6 + changesets + Knip(最稳)
  2. 企业 / Angular / 大库:pnpm + Nx 21(深 AI 集成)
  3. 多语言 polyglot:Moon 2.0Bazel + rules_js
  4. 新栈试水:Vite+ vp(Alpha)
  5. 存量 Lerna 项目:Lerna 8 已是 Nx-powered,可以平滑迁
  6. 不要选:Yarn 4 PnP 在新项目仍是非主流(除非有 constraints 强约束需求);npm workspaces 严肃场景不够
  7. 配套读:TypeScript 7isolatedDeclarations 在 monorepo 里收益最大

🔗 调研来源