1.初始化 Monorepo 项目
首先创建一个新的monorepo
项目,并初始化一个 pnpm 工作空间。
1 | mkdir my-monorepo |
2.配置 pnpm 工作空间
在项目的根目录下创建一个pnpm-workspace.yaml
文件,用于定义工作空间的包结构:
1 | packages: |
此文件告诉pnpm
在packages
和apps
目录下的所有包都是工作空间的一部分。
3.创建子包
在packages
和apps
目录中创建你的子项目,例如:
1 | mkdir -p packages/utils |
然后分别在这些目录下初始化 package.json 文件:
1 | cd packages/utils |
1 | cd apps/webapp |
4.安装依赖
在项目根目录执行依赖安装:
1 | pnpm install |
pnpm
会自动在根目录创建node_modules
,并使用硬链接方式共享依赖,节省空间。
5.子包之间的依赖管理
在apps/webapp
中引用packages/utils
:
1 | cd apps/webapp |
pnpm 会将 utils 包作为依赖添加到 webapp 项目中,并实现本地引用。
6.运行脚本
可以在 pnpm 工作区内执行特定包的脚本。例如,在 webapp 中启动应用:
1 | pnpm --filter webapp run start |
7.发布和版本管理
通过 pnpm,可以使用changesets
进行版本管理和发布。
8.pnpm 常用命令
模块 | 命令 | 功能描述 |
---|---|---|
管理依赖 | pnpm add |
安装软件包及其依赖的任何软件包。 |
管理依赖 | pnpm install |
安装依赖 |
管理依赖 | pnpm update |
更新所有依赖 |
管理依赖 | pnpm remove |
删除包 |
运行脚本 | pnpm run |
运行一个在 package.json 中定义的脚本 |
ps:其他命令可以参考文档
总结
这种 pnpm + monorepo 的大仓实践能够很好地管理大型前端项目的多个包,使得依赖关系和包之间的联动更加简单、清晰,并能提高团队协作效率。