关于monorepo:从0开始使用pnpm构建一个Monorepo方式管理的demo
写在后面Monorepo这个词你应该不止一次据说了,像Vue3、Vite、ElementPlus等优良开源我的项目都是应用Monorepo的形式治理我的项目,且这里说到的这几个我的项目都是采纳pnpm作为包管理工具。这篇文章就应用pnpm构建一个简略的Monorepo形式治理的我的项目。 什么是Monorepo?什么是pnpm?Q:什么是Monorepo?A:Monorepo是一种项目管理形式,就是把多个我的项目放在一个仓库外面,能够参考神三元大佬的一篇文章:古代前端工程为什么越来越离不开 Monorepo?,这篇文章中介绍了Monorepo的概念、收益以及MulitRepo的弊病。Q:什么是pnpm?A:pnpm就是一个包管理工具,原生反对Monorepo,比npm和yarn更快一些,其余的能够参考官网和神三元大佬的另一篇文章:为什么当初我更举荐 pnpm 而不是 npm/yarn? 搞一个Monorepo的demo玩玩当初咱们就开始应用pnpm来构建一个Monorepo,在闲事开始之前,你先须要保障你的电脑中具备Node.js,我的版本的是16.9.0。首先你须要有pnpm这个工具,装置的话能够从官网找办法,或者间接应用npm装置,命令如下:npm i pnpm -g 当初咱们开始搞事件。第一步,创立一个我的项目的根目录,这里就叫monorepo-demo,咋创立都可,这里应用的是命令:mkdir monorepo-demo 第二步,初始化package.json,这个没啥说的,命令如下:pnpm init 这里我对内容做了一点批改,package.json的内容如下:{ "name": "monorepo-demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1"}, "type": "module", "keywords": [], "author": "ywanzhou", "license": "MIT"} 这里我次要增加了一个type字段,这里我应用ESModule模块化标准。第三步,创立pnpm-workspace.yaml文件,这个文件定义了工作空间的根目录,内容如下:packages: 'packages/ **'当初咱们就能够在packages中创立多个我的项目了,目录构造如下:monorepo-demo├── package.json├── packages│ ├── components│ │ ├── index.js│ │ └── package.json│ ├── core│ │ ├── index.js│ │ └── package.json│ ├── utils│ │ ├── index.js│ │ └── package.json├── pnpm-lock.yaml└── pnpm-workspace.yaml ...