使用Monorepo的项目代码管理方式优化架构

93 阅读1分钟

微前端是「聚合」,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