单仓多项目
概念
Monorepo,即“单个仓库多项目管理”,是一种项目代码管理方式,它将多个项目(如应用、库、工具等)代码集中管理在一个仓库中。
这种方式有助于简化代码共享、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性。
这种方法已被广泛采用,包括一些知名公司如Google、Facebook和Microsoft等。
Monorepo不仅限于前端开发,它在多种编程语言和开发环境中都有应用,只是被前端更多的使用而已。
Monorepo不仅限于Pnpm,yarn和npm同样也有办法支持,只不过Pnpm支持的更好而已!
pnpm-workspace.yaml
pnpm默认仓库为单一仓库(单体仓库) multirepo,如果你想要开启多仓能力 monorepo,根目录下必须有用于定义工作空间的范围的多仓的核心配置文件:
pnpm-workspace.yaml
优化启动与打包
针对node项目,比如 node、express、koa、vue、react等等项目,每个项目都有自己的打包和启动方式,这就我们去整合。
屏蔽子项目script
首先我们需要屏蔽掉项目的 package.json 中各自的script脚本命令,
这样,在vscode中最左侧的Vscode脚本中就不会显示那么乱!
主项目创建启动或打包命令
在主项目的根目录,创建一个bin文件夹,里边放置 dev.js 和 build.js,分别用来管理启动和打包
启动
通过 @inquirer/prompts 这个三方包,再结合我们的脚本:用户执行此脚本 npm run build,就可以列出所有的项目,按下空格选择 回车启动!
如果你想超时自动选择,还可以这么做
不过需要注意的是,这种交互方式的启动,在服务器上部署时,可能不太友好,因为用户无法交互,从而会导致pm2启动失败!
