vue3 + pnpm 打造一个 monorepo 项目

单一仓库与多仓库架构

单一仓库(Monorepo)架构是一种策略,它允许我们在一个单一的仓库中管理多个项目或包;而多仓库(Multirepo)架构则是将每个项目分别存放在不同的仓库中。

在Monorepo结构中,除了根目录下有一个公共的package.json文件外,每个子项目(sub-package)也有自己的package.json文件。

子项目之间可以通过在package.json中定义的name属性相互引用,从而保持各自的独立性。

# 单一仓库目录结构示例
monorepo-demo
├── packages
│   ├── module-a
│   │   ├── src             # 模块A的源代码
│   │   ├── node_modules    # 模块A的依赖库
│   │   └── package.json    # 模块A的依赖配置
│   └── module-b
│       ├── src             # 模块B的源代码
│       └── package.json    # 模块B的依赖配置
├── .eslintrc             # 整个项目的配置文件
├── node_modules          # 所有子项目的公共依赖库
└── package.json          # 所有子项目的公共依赖配置

相比之下,Multirepo架构倾向于将每个项目隔离在不同的仓库中,每个项目都有自己的package.json文件来管理依赖。

# 多仓库项目A目录结构
multirepo-a
├── src
├── .eslintrc                
├── node_modules             
└── package.json   

# 多仓库项目B目录结构
multirepo-b
├── src
├── .eslintrc                
├── node_modules             
└── package.json

单一仓库工具

在采用单一仓库架构的软件开发中,选择合适的工具对于管理大规模代码库、提升团队协作效率以及优化构建和部署流程至关重要。

截至2024年,前端领域中流行的Monorepo工具包括Pnpm WorkspacesYarn Workspacesnpm WorkspacesRushTurborepoLernaYalcNx

强烈推荐使用Pnpm Workspaces作为单一仓库项目的依赖管理工具。

那么,单一仓库与包管理工具(npm、yarn、pnpm)之间的关系是怎样的呢?

这些包管理工具能够为单一仓库提供依赖安装和依赖管理的支持。通过它们对workspace的支持,允许在单一仓库中的不同子项目之间共享依赖项,并提供一种管理这些共享依赖项的方法。这可以简化依赖项管理和构建过程,并提高开发效率。

单一仓库项目搭建

背景

传统的多仓库模式通常意味着每个项目都需要一个独立的仓库。例如,如果你有三个项目,就需要创建三个远程仓库,并且需要为每个项目单独安装和升级依赖。

而单一仓库模式则是在一个仓库中管理多个项目,这些项目可以是独立的,也可以相互依赖。通过这种方式,多个项目可以共享依赖。例如,如果多个项目都需要lodash,那么只需要安装一次即可。

pnpm i lodash -w

当然,在单一仓库中,除了公共的package.json依赖外,每个子项目也会有自己的私有package.json依赖。

我们选择Pnpm Workspaces作为单一仓库项目的依赖管理工具,接下来一起搭建一个单一仓库项目。

安装包管理工具

全局安装pnpm。

npm i pnpm -g

初始化项目

创建一个新的项目目录pnpm-monorepo,在根目录运行pnpm init创建package.json文件。

然后在根目录新建一个packages文件夹,用于存储子项目。

新建packages/libc-shared(共享包),用于存放多个项目或组件之间共享的代码。运行pnpm init创建package.json文件,package.jsonname字段修改为"@libc/shared";将package.jsonmain入口文件路径字段修改为"src/index.js"

{
  "name": "@libc/shared",
  "version": "1.0.0",
  "main": "src/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
}

新建packages/libc-ui(公共组件包),即UI组件库,这里我们直接克隆了iview-ui-plus代码。运行pnpm install安装依赖,**将package.jsonname字段

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4308.html

(0)
LomuLomu
上一篇 2024 年 12 月 24 日
下一篇 2024 年 12 月 24 日

相关推荐

  • Redis Java 集成到 Spring Boot

    Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Redis 📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。 Redis Java 集成到 Spring Boot 一、使用 Spring Boot 连接 Redis 单机 1.创…

    2024 年 12 月 28 日
    8900
  • 扣子又出新功能,支持一键部署小程序,太强了!!

    大家好,我是R哥。 作为一名程序员和技术博主,我一直关注如何使用工具提升生产力,尤其是在内容创作和应用开发领域。 拿我开发一个微信小程序为例,我需要懂前端、后端、运维 等全栈技术,开发流程和技术栈复杂,我还需要购买云服务器、云数据库 等各种基础设施,资源耗费非常多。 虽然现在有如 Cursor 这样的革命性 AI 开发工具,它突破了传统开发模式的壁垒,非开发…

    2025 年 1 月 13 日
    8700
  • SpringBoot集成ECDH密钥交换

    简介 对称加解密算法都需要一把秘钥,但是很多情况下,互联网环境不适合传输这把对称密码,有密钥泄露的风险,为了解决这个问题ECDH密钥交换应运而生 EC:Elliptic Curve ——椭圆曲线,生成密钥的方法 DH:Diffie-Hellman Key Exchange ——交换密钥的方法 设计 数据传输的两方服务端(Server)和客户端(Client)…

    未分类 2025 年 1 月 6 日
    9200
  • 库存系统:仓库层、调度层、销售层的库存数据模型设计

    大家好,我是汤师爷~ 让我们一起深入挖掘库存概念模型的设计精髓,这不仅是构建库存管理系统的基石,更是确保库存数据精准和一致性的核心所在。 库存的数据模型设计 下图展示了库存概念模型的设计概览。通过精心设计的概念模型,我们能够有效支撑库存管理的多元化业务需求。 仓库层 仓库层是商品库存存放和管理的实际场所,承担着具体的仓储操作任务。它涵盖了企业自建仓库、第三方…

    2024 年 12 月 24 日
    13100
  • 华为OD机试E卷 –游戏分组–24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 Js算法源码 python算法源码 java算法源码 c++算法源码 c算法源码 题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为示例尽量相近的两队。一队的实力可…

    未分类 2025 年 1 月 5 日
    14400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信