Monorepo 模板项目,用于开发 微应用 (apps) 和 构件包 (bricks)。
基于 pnpm workspaces + Turborepo + Changesets 构建。
- Node.js >= 22(见
.nvmrc) - pnpm >= 9
# 安装 pnpm(如果尚未安装)
npm install -g pnpm在 GitHub 上点击 "Use this template" 创建新仓库,然后克隆到本地。
# 复制开发配置
cp dev.config.example.mjs dev.config.mjs
# 安装依赖
pnpm install# 启动示例应用的 watch 模式
pnpm --filter @apps/example run start
# 在另一个终端启动开发服务器
pnpm run serve -- --local-micro-apps=example --subdir --local-container --server=https://your-server.local
# 访问: https://localhost:8081/next/example.
├── apps/ # 微应用目录
│ └── example/ # 示例应用(YAML 模式)
│ ├── package.json
│ └── src/
│ ├── app.yaml # 应用元数据
│ ├── i18n.yaml # 国际化
│ ├── contracts.yaml # API 合约
│ ├── Menus/ # 菜单定义
│ └── Pages/ # 路由页面
├── bricks/ # 构件包目录
├── shared/ # 共享库目录
├── scripts/ # 构建和发布脚本
├── declarations/ # 全局 TypeScript 类型声明
├── __jest__/ # Jest 全局 setup
├── package.json # 根配置
├── pnpm-workspace.yaml # pnpm 工作区定义
├── turbo.json # Turborepo 构建缓存配置
├── dev-config.yaml # 部署主机配置
└── dev.config.example.mjs # 开发服务器配置示例
# 构建所有(bricks → apps)
pnpm run build
# 仅构建 apps
pnpm run build:apps
# 构建指定应用
pnpm turbo build --filter=@apps/example
# 构建 bricks
pnpm run build:bricks
# 构建 shared
pnpm run build:shared
# 构建生产制品
pnpm run build:apps:artifact
pnpm run build:apps:artifact:production# 启动所有包的 dev 模式
pnpm run start
# 启动开发服务器
pnpm run serve -- --local-micro-apps=YOUR_APP --subdir --local-container --server=https://your-server.local# 运行 bricks 测试
pnpm run test
# 运行 apps 测试(ESM 模式)
pnpm run test:apps# 手动运行 lint(通常由 pre-commit hook 自动触发)
pnpm run lint-staged- 复制
apps/example/目录并重命名:
cp -r apps/example apps/my-app-
修改
apps/my-app/package.json中的name为@apps/my-app -
修改
apps/my-app/src/app.yaml中的id、name、homepage -
修改菜单和路由文件中的相关引用
-
在
dev-config.yaml中添加部署配置 -
运行
pnpm install更新工作区
使用脚手架工具:
pnpm run yo按照交互提示创建新的 brick 包,文件将生成在 bricks/ 目录下。
项目使用 Turborepo 进行增量构建缓存:
- 首次构建后,未变更的包在后续构建中会直接使用缓存
- 缓存存储在
.turbo/目录(已被.gitignore忽略) - CI 中可配置远程缓存进一步加速
# 查看哪些包会被构建(dry run)
pnpm turbo build --dry
# 强制跳过缓存重新构建
pnpm turbo build --force项目使用 Changesets 管理版本和 CHANGELOG。
Git commit 后会自动根据 commit message 生成 changeset 文件(通过 post-commit hook):
feat(xxx):→ minor 版本升级fix(xxx):/refactor(xxx):→ patch 版本升级- 包含
BREAKING CHANGE→ major 版本升级
pnpm run changesetpnpm run changeset:status# 一键发布(更新版本号、生成 CHANGELOG、打 tag、推送)
pnpm run publish该命令会自动完成:
- 基于 changeset 文件更新版本号和 CHANGELOG
- Git commit
- 创建 Git tags
- 推送到远程仓库
# 发布 @shared/* 、 @bricks/* 类型的包到npm仓库
pnpm run release本地开发服务器配置
可配置:
brickFolders:本地 brick 包路径settings:Feature flagsuserConfigByApps:应用级配置mocks:API mock
部署主机配置,用于生成 deploy.txt。构建后自动执行。