pnpm构建一个monorepo方式管理

232 阅读1分钟

什么是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: *"
  }  
}