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 Workspaces、Yarn Workspaces、npm Workspaces、Rush、Turborepo、Lerna、Yalc和Nx。

强烈推荐使用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.json的name字段修改为"@libc/shared";将package.json的main入口文件路径字段修改为"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.json的name字段

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

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

相关推荐

  • Grok Super自己账号代充操作教程

    Grok Super自己账号代充操作教程,适合国内用户使用微信支付宝为自己的账号完成充值、订阅或代充开通。

    未分类 2026 年 7 月 10 日
    25800
  • ChatGPT Plus充值已确认还要再次点击提交吗

    ChatGPT Plus 充值已经提交确认后,不应把反复点击当作推进进度的方法。先看页面反馈和原订单状态,再回到目标账号查看会员;没有明确结果时,保存当前提示并询问购买渠道。下面保留完整国内充值路径,便于核对自己停在哪一步;已经提交的订单应先查进度,不能用重新购买来代替确认。

    未分类 2026 年 9 月 10 日
    14000
  • 【深度学习】Java DL4J基于 RNN 构建智能停车管理模型

    🧑 博主简介:CSDN博客专家 ,历代文学网 (PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学 ”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理…

    2025 年 1 月 12 日
    69100
  • Claude国内代充自己账号开通教程

    Claude国内代充自己账号开通教程,适合长期使用 Claude 的用户,重点说明微信支付宝、账号核对和自己账号 Pro 状态。

    未分类 2026 年 5 月 21 日
    26300
  • SuperGrok国内支付开通会员教程

    国内用户如何充值Grok?本文整理Grok充值、Grok代充、SuperGrok充值和国内开通Grok Super流程。

    未分类 2026 年 6 月 2 日
    26200

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信