什么是Monorepo?什么是pnpm?
Monorepo是一种项目管理方式,就是把多个项目放在一个仓库里面,可以参考神三元大佬的一篇文章:现代前端工程为什么越来越离不开 Monorepo?,这篇文章中介绍了Monorepo的概念、收益以及MulitRepo的弊端。
Monorepo项目开始
第一步初始化package.json
pnpm init
第二步创建pnpm-workspace.yaml文件,这个文件定义了工作空间的根目录,内容如下:
- 'packages/**'
- 'components/**'
- 'utils'
第三步在packages文件下面创建2个项目 小插曲:目录结构生成可以使用tree-node-cli
treee -L 4 -I "node_modules|themes|public" > tree.md
参数解释:
tree -L n显示项目的层数。n 代表你要生成文件夹树的层级;tree -I "node_modules|themes|public"表示要过滤的文件或目录, 过滤多个文件或目录用 | 分割;tree > tree.md表示将树结构输出到 tree.md 这个文件;
packages
├── project-one
│ ├── index.js
│ ├── package.json
│ └── tsconfig.json
├── project-two
│ └── package.json
└── tree.md
第四步安装依赖,如果这个依赖包只会在一个项目里面用到,那么就安装到对应项目里的package.json即可
pnpm install 依赖包 --filter 项目名称
如果这个依赖包全局都都会用到,那么这个应该装在根目录下的package.json下面
pnpm install 依赖包 -w
第五步,创建一个share文件,放置一些公共依赖包
第六步,项目A需要引用公共依赖包
// package.json
{
"dependencies": {
"公共依赖包": "workspace: *"
}
}