本文档说明 web-components pnpm monorepo 的结构和工具链配置。
| 包名 | 描述 | 构建工具 | Lint 工具 | 备注 |
|---|---|---|---|---|
@rtc-agent/component |
核心 Web Components(Lit) | Vite + tsc | Biome | 主包,跨 5 个 packages |
@rtc-agent/client |
通信层(Centrifuge) | tsc | Biome | 纯 TypeScript |
@rtc-agent/protocol |
协议定义 | tsc | Biome | 类型定义 |
@rtc-agent/worker |
SharedWorker 层 | Vite + tsc | Biome | Web Worker |
@rtc-agent/persistence |
持久化层(IndexedDB) | tsc | Biome | 虚拟文件系统 |
@rtc-agent/admin-ui |
管理后台(Ant Design Pro) | Umi Max | Biome | 独立项目嵌入 |
- 包管理器:
pnpm(所有包统一) - Lint 工具:
Biome(根级配置,所有包共享) - 测试框架:
Vitest(大部分包使用) - TypeScript:严格模式(所有包)
@rtc-agent/admin-ui 本质上是 Ant Design Pro 模板项目嵌入到 monorepo,保留了一些独立性:
差异点:
-
构建工具:使用 Umi Max 的
max build,而非 turbo 缓存- 原因:Umi Max 有自己的构建优化和缓存机制
-
项目结构:有自己的
.husky、.commitlintrc等配置- 原因:继承自 Ant Design Pro 模板
-
开发命令:
# 其他包使用 turbo pnpm build # 根级 turbo run build pnpm dev # 根级 turbo run dev # admin-ui 直接调用 cd packages/admin-ui pnpm run build # max build pnpm run dev # max dev
-
配置文件:
config/config.ts— Umi 配置config/routes.ts— 路由配置- 没有
vite.config.ts或tsup.config.ts
为什么这样设计:
- admin-ui 是一个完整的 React 应用,不是库
- Umi Max 提供了开箱即用的企业级功能(路由、权限、国际化等)
- 强行统一到 turbo 可能破坏 Umi 的内部优化
开发者须知:
- 在 admin-ui 目录工作时,使用
pnpm run <script>而非turbo run - Biome 配置继承自根级,但有一些 React 特定的 override
prepare脚本会调用max setup,这是 Umi 特有的
# 构建所有包(使用 turbo 缓存)
pnpm build
# 开发模式(只启动 component)
pnpm dev
# 类型检查所有包
pnpm typecheck
# Lint 所有包
pnpm lint
# 运行测试
pnpm test
# 格式化代码
pnpm formatcd packages/<package-name>
# 构建
pnpm run build
# 开发
pnpm run dev
# 类型检查
pnpm run typecheck
# Lint
pnpm run lint
# 测试
pnpm run test- 使用 Biome 自动格式化(
pnpm format) - 提交前运行
pnpm lint确保通过 - TypeScript 严格模式,不允许
any
使用 Conventional Commits:
<type>(<scope>): <subject>
<body>
<footer>
示例:
feat(component): add dark mode support
Implement theme switching with CSS variables.
Co-Authored-By: Claude Code <noreply@anthropic.com>
- 从
dev分支创建特性分支 - 提交代码(遵循 Conventional Commits)
- 确保所有 CI 检查通过
- 创建 PR 到
dev分支 - 等待 Review
# 清理缓存
pnpm clean # 如果有的话
rm -rf node_modules
pnpm install
# 重新构建
pnpm buildcd packages/admin-ui
# 删除 Umi 缓存
rm -rf src/.umi src/.umi-production
# 重启
pnpm run dev# 查看具体错误
pnpm typecheck
# 或者直接运行 tsc
pnpm tsc --noEmit