Skip to content

什么是Monorepo

  • 英文:Monolithic Repository
  • 中文:单一仓库(多项目管理方案)
  • 概念:一个仓库管理多个项目的工程化开发管理模式
  • 优势:
    • 便于代码和依赖在多个项目之间的共享
    • 更简单便捷的版本控制
    • 提高多项目的构建与部署的便捷性
    • 提高代码的复用性和团队协作的便利性
  • 应用
    • 项目的子项目架构(微前端)
    • 对于工具分类的架构(轮子)
    • 对于复杂且丰富的应用需求的功能切片

Repository项目管理的发展历程

  1. 单仓库单应用模式 - Monolith
    1. 一个仓库管理一个单一应用
    2. 缺点:随着项目的功能迭代,单应用的规模会逐渐变大,难以维护
  2. 多仓库多应用模式 - Multirepo
    1. 多个应用分配给多个对应的仓库进行管理
    2. 缺点:无法进行项目依赖与代码共享,多应用之间的结合变得复杂且功能
  3. 但仓库多应用 - Monorepo
    1. 一个仓库管理多个应用
    2. 优点:业务代码分离解构,应用之间依赖与代码、项目配置、构建木梳、项目扩展更方便

Monorepo的组成

  • apps -> 应用(一个大型项目中的子应用)
  • packages -> 本地包(Local Package)
  • 依赖的公有和私有
  • 配置的公有和私有

Monorepo案例

微前端

  1. 微前端是一种复合型项目的开发方式(一个大项目中的小应用的开发方式)
  2. 微前端的核心就是微应用
  3. 一个复合型项目拆分成小应用进行开发,最后将所有小应用正和成一个大项目的开发方式称为微前端开发

微前端的好处

  • 在项目整体框架下,可以独立开发、打包、部署、发布微应用
  • 独立应用的调试和部署,对整个项目的运行影响比较小(基本上没啥影响)
  • 应用的独立性、复用性强
  • 技术栈不限

微前端开发模式

  1. MPA -> Multiple Page Appplication:多页面应用
  2. SPA -> Single Page Application:单页面应用

SPA模式构建方式

  • 基座:提供给多应用的注册与应用路由设置的工具
  • 微应用接入基座

Monorepo是单仓库多应用模式,spa是单页面项目多独立开发

Monorepo+qiankun构建项目

基础配置

  • react vite为基座
    • 基座必须注册子应用
  • vue vite为微应用1
  • react vite为微应用2

qiankun在vite中是无法直接使用的,需要借助vite-plugin-qiankun 使用@vitejs/plugin-react在qiankun中使用,编译后会的代码会有import react,所以不可以使用@vitejs/plugin-react或者使用webpack构建