微前端是「聚合」,Monorepo 是「拆分」
微前端解决的问题是,将多个以不同技术栈完成,但是拥有相同业务逻辑或关联业务逻辑的应用聚合到一起。而 Monorepo 却恰恰相反,是将一个应用中相对比较独立的逻辑,拆分成独立的包,减少相互的耦合和制约,并且使用同一个存储仓库,这样有助于简化代码共享、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性
基于 pnpm 实现 Monorepo
-
Monorepo 组织结构
├── packages | ├── pkg1 | | ├── package.json | ├── pkg2 | | ├── package.json ├── package.json ├── pnpm-workspace.yaml
-
安装 pnpm
npm install -g pnpm
pnpm
是一个非常轻量的Monorepo
管理工具,深入了解可参阅 优化实战 第 61 期 - 使用 pnpm 提升工程化效率 一文 -
创建项目根目录
mkdir generics
-
在根目录下进行初始化,生成 package.json 文件
pnpm init
为了防止根目录被当作包进行发布,需要在文件
package.json
文件中进行安全性设置{ "private": true }
-
在根目录下创建 Monorepo 项目的配置文件
touch pnpm-workspace.yaml
-
在根目录下创建 packages 目录并在 pnpm-workspace.yaml 文件中进行配置
packages: - 'packages/*'
基于 pnpm 集成 typescript
- 安装依赖包
pnpm add typescript --save-dev -w
- 在根目录下生成 tsconfig.json 配置文件
点击阅读有关此文件的详细信息tsc --init