Install
openclaw skills install fec-monorepo-project-standardUse when creating, reviewing, or restructuring frontend monorepos with pnpm workspace, Turborepo, Nx, multi-package dependency boundaries, task orchestration, package naming, or package publishing; Chinese triggers include monorepo, workspace, 多包.
openclaw skills install fec-monorepo-project-standard适用于使用 pnpm workspace、Turborepo 或 Nx 的多包前端仓库。
规范 Monorepo 项目的目录结构、依赖管理、任务编排和包发布流程,确保多包协作的构建效率和版本一致性。
apps/,共享库、配置和工具放在 packages/ 或既有等价目录。workspace:*,通过依赖图驱动构建顺序。| 工具 | 适用 | 特点 |
|---|---|---|
| pnpm workspace | 基础 | 依赖提升、链接、脚本聚合 |
| Turborepo | 推荐 | 缓存、并行、依赖图 |
| Nx | 大型 | 增量构建、云缓存、插件生态 |
├── package.json # 根 package,workspace 配置
├── pnpm-workspace.yaml # workspace 包列表
├── turbo.json # Turborepo 配置
│
├── apps/
│ ├── web/ # 主应用
│ │ ├── package.json
│ │ └── ...
│ ├── admin/ # 管理后台
│ └── docs/ # 文档站
│
├── packages/
│ ├── ui/ # 共享 UI 组件
│ │ ├── package.json
│ │ └── src/
│ ├── utils/ # 工具函数
│ ├── config-eslint/ # 共享 ESLint 配置
│ └── config-typescript/ # 共享 TS 配置
│
└── tooling/ # 构建/测试工具(可选)
└── scripts/
packages:
- "apps/*"
- "packages/*"
workspace:* 协议package.json 统一部分依赖版本,子包可覆盖pnpm why 检查{
"dependencies": {
"@repo/ui": "workspace:*",
"@repo/utils": "workspace:*"
}
}
{
"$schema": "https://turbo.build/schema.json",
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".next/**"]
},
"lint": {
"dependsOn": ["^build"]
},
"test": {
"dependsOn": ["^build"]
}
}
}
^build 表示先执行依赖包的 buildoutputs 用于缓存命中判断inputs 应包含源码、配置、锁文件和环境相关文件;不要把 .env secret 值写入缓存 key{
"targetDefaults": {
"build": {
"dependsOn": ["^build"],
"outputs": ["{projectRoot}/dist"],
"cache": true
}
}
}
@org/package-name 或 @repo/package-name@scope/name 规范workspace:* 引用,不发布到 npm 再安装packages/config-*,子包 extendspnpm -r build 或 turbo run build 时,所有包按序构建pnpm why 检查依赖链apps/ 应用、packages/ 共享包、tooling/ 工具)pnpm-workspace.yaml 和 turbo.json / nx.json 配置正确workspace:* 协议,无循环依赖