一个基于 pnpm workspace + lerna 的 monorepo 项目模板,包含多个包和示例站点。
# 安装依赖
pnpm install
# 开发模式(并行启动所有包)
pnpm dev
# 构建所有包
pnpm build
# 构建指定包
pnpm build:packages # 只构建 packages 目录下的包
pnpm build:sites # 只构建 site 目录下的站点
# 代码检查和格式化
pnpm lint # 修复 lint 问题
pnpm lint:check # 只检查不修复
pnpm fmt # 格式化代码
pnpm fmt:check # 检查格式
pnpm type-check # TypeScript 类型检查
# 清理
pnpm clean:dist # 清理所有构建产物
pnpm clean # 清理所有 node_modules 和构建产物
# 生成文档
pnpm docs
# 在根目录安装依赖(-w 表示 workspace root)
pnpm add <package> -w -D
# 给指定子包安装依赖
pnpm add <package> -r --filter <package-name>
# 示例:给 pkg2 安装 lodash-es
pnpm add lodash-es -r --filter pkg2
# 子包相互引用
pnpm add <package-a> -r --filter <package-b>
# 执行指定子包的脚本
pnpm run --filter <package-name> <script-name>
# 示例:执行 pkg2 的 dev 脚本
pnpm run --filter pkg2 dev
# 执行所有子包的脚本(注意星号)
pnpm run --filter '*' build
.
├── packages/ # 核心包
│ ├── react-ui/ # React UI 组件库
│ ├── store/ # 状态管理
│ └── web-components/ # Web Components
├── site/ # 示例站点
│ ├── with-react/ # React 示例
│ ├── with-vue2/ # Vue 2 示例
│ └── with-vue3/ # Vue 3 示例
├── common/ # 公共工具
└── config/ # 配置文件
包入口文件src/index.ts, 默认构建产物 cjs, esm。 当 src 下有 main.ts 时,才会构建 umd 产物。
备注:如果想更新构建入口请更新 config/rollup/src/index.mjs 文件中的配置。
# 查看所有包
pnpm list
# 版本管理
pnpm version
# 发布到 npm(使用 git tag 进行版本发布)
pnpm release
项目使用 commitlint 规范提交信息,支持以下类型:
feat: 新功能fix: 修复 bugenhance: 增强功能refactor: 重构docs: 文档更新style: 代码格式调整test: 测试相关chore: 构建/工具链相关perf: 性能优化ci: CI 配置build: 构建相关revert: 回滚示例:feat(store): add new state management feature
MIT