简单了解波 Mono-repo Multi-repo(Poly-repo)

Mono-repo 和 Multi-repo 是软件开发中代码管理的两个不同策略。Mono-repo & Multi-repo 孰优孰劣是个老生常谈得话题了,这里就不 PK 了,“略微”看下两者区别。

当我们使用 Git 作为版本控制系统管理项目的代码时,那么 monorepo 与 multirepo 的定义表述如下:

  • monorepo,使用一个 Git 仓库管理项目相关的多个 模块/包/功能/应用。
  • multirepo(又称为 polyrepo),使用多个 Git 仓库分别管理项目的每一个 模块/包/功能/应用。

Monorepo 的应用实例

GitHub 有很多的使用 Monorepo 风格管理代码的开源项目,比如大名鼎鼎的 Babel,项目结构如下图:

Babel GitHub Repo

packages 目录下存放了很多个 Babel 相关的子项目。

googles-monorepo-demo给出了一个基于 Maven 构建工具的 Google 风格的 Monorepo 项目。

还有大佬给出了有 CI/CD pipeline 基于 Java, Maven, GitHub Actions 的 Demo 👉 monorepo-maven-example。

monorepo-maven-example-with-github-actions

使用工具快速搭建 Monorepo 风格的项目

现今,有许多可以创建 Monorepo 风格项目的工具,在前端社区有 Lerna、Nx、Rush Stack、Yarn Workspaces 等,还有许多其它的构建工具可以用于创建 Monorepo 风格的项目,见项目 -> awesome-monorepo。这里让我们看看通过 Nx 创建的 Monorepo 风格的项目是怎么样的:

Nx create project

project structure

medium 上有篇文章简述了 11 种不同 Monorepo 构建工具的特点:11 Great Tools for a Monorepo in 2021

一图看 Monorepo 和 Multirepo 的区别

这里我们用一张图来看下使用 Git 管理多个 package 时,Monorepo 和 Multirepo(Polyrepo) 的区别:

Monorepo & Multirepo(Polyrepo)

Don't say so much. 就这样了🤨🕊️,又水了一篇文章。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iptables 与 firewalld 防火墙

iptables iptables 是一款基于命令行的防火墙策略管理工具 四种防火墙策略: ACCEPT(允许流量通过) 流量发送方会看到响应超时的提醒,但是流量发送方无法判断流量是被拒绝,还是接收方主机当前不在线 REJECT&#xff08…

上位机图像处理和嵌入式模块部署(qmacvisual寻找圆和寻找直线)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面有几篇文章,我们谈到过直线拟合、圆拟合和椭圆拟合。当时,我们的做法是,先找到了轮廓,接着找到…

设计模式-概述篇

1. 掌握设计模式的层次 第1层:刚开始学编程不久,听说过什么是设计模式第2层:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道第3层:学习过了设计模式,…

Stable Diffusion本地部署全攻略:从概念到实战

目录 一、概念篇:什么是Stable Diffusion? 二、原理篇:Stable Diffusion是如何工作的? 三、作用篇:Stable Diffusion能为我们带来什么? 四、教程篇:如何在本地部署Stable Diffusion&#xf…

UDP send 出现大量“Resource temporarily unavailable”

背景 最近排查用户现场环境,查看日志出现大量的“send: Resource temporarily unavailable”错误,UDP设置NO_BLOCK模式,send又发生在进程上下文,并且还设置了SO_SNDBUF 为8M,在此情况下为什么还会出现发送队列满的情况…

Composer常见错误及解决方案

Composer常见错误及解决方案 Composer是PHP的依赖管理工具,它使得在PHP项目中管理和安装依赖库变得简单。然而,在使用Composer时,开发者可能会遇到一些常见的错误。在本文中,我们将探讨一些常见的Composer错误以及相应的解决方案…

【JavaWeb】Day28.SpringBootWeb请求响应——请求(一)

前言: 我们在开发web程序时呢,定义了一个控制器类Controller,请求会被部署在Tomcat中的Controller接收,然后Controller再给浏览器一个响应。 而在请求响应的过程中是遵循HTTP协议的。 但是,在Tomcat这类Web服务器中&a…

Jupyter Notebook启动及其常用快捷键

添加图片注释,不超过 140 字(可选) 1.JupyterNotebook 第一种启动方式 点击 windows 电脑左下角开始 > 搜索 Anaconda > 点击 Anaconda Prompt 添加图片注释,不超过 140 字(可选) 在命令行窗口输入&…

Java 多附件zip下载完整代码

需求:Java根据Url把多个文件下载到指定的文件夹目录,然后再将文件夹目录打包成zip导出. Slf4j Controller("test") Api(value "zip文件上传API", tags {"zip文件上传"}) public class Download { Autowired private Recor…

打造高效安全的电池管理 | 基于ACM32 MCU的两轮车充电桩方案

前 言 随着城市化进程的加快、人们生活水平的提高和节能环保理念的普及,越来越多的人选择了电动车作为代步工具,而两轮电动车的出行半径较短,需要频繁充电,因此在城市中设置两轮车充电桩就非常有必要了。城市中的充电桩不仅能解决…

NoSQL注入基础及思路

君衍. 一、NoSQL1、为什么使用NoSQL2、RDBMS与NoSQL区别3、NoSQL产品4、NoSQL 数据库分类 二、MongoDB1、认识MongoDB2、MongoDB特性3、MongoDB工作方式4、MongoDB缺陷5、MongoDB基本概念6、数据库Database7、文档Document8、集合Collection 三、MongoDB基本操作1、数据库操作2…

C++类继承基础3——访问控制与继承

私有继承 在C中,私有继承是一种继承方式,它定义了一个私有派生类,也称为派生类。私有继承意味着派生类继承了基类的所有成员,但这些成员在派生类中是私有的,对外部不可见。 要进行私有继承请使用private关键字&#…

蓝桥杯十四届JavaB组省赛ABCD

A阶乘求和 从1!一直加到202320232023!,如果一个个算阶乘的后九位再相加,算法可以实现,但是运算量很大,需要一段时间。用计算器算了一下100!阶乘发现后几位都是0,因此加到20232023202…

centos7.5 安装gitlab-ce (Omnibus)

一、安装前置依赖 # 安装基础依赖 $ sudo yum -y install policycoreutils openssh-server openssh-clients postfix# 启动 ssh 服务 & 设置为开机启动 $ sudo systemctl enable sshd & sudo systemctl start sshd二、安装gitlab rpm包 # 下载并执行社区版脚本 curl …

安装redis任意版本详解(包含yum安装和编译安装)

根据不同需求需要安装的redis版本不同,在此有编译安装和yum安装详细操作。(3.x 5.x 6.x 版本安装都有写到,可以根据需要进行部署参考) Yum安装redis yum install -y epel-release yum install -y redis 下载的是3.2.12版本 v…

AI如何影响装饰器模式与组合模式的选择与应用

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:设计模式深度解析:AI如何影响…

【Java初阶(七)】接口

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ 🚚我的代码仓库: 33的代码仓库🚚 目录 1.前言2.接口2.1语法规则2.2接口使用2.3接口特性2.4实现多个接口2.5接口使用实例2.6Clonable接口和深拷贝 3.Object类3.1对象比较equals方法3.2hashcod…

vue系列——v-on

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>v-on指令</title> </head> <body>…

算法系列--递归,回溯,剪枝的综合应用(2)

&#x1f495;"对相爱的人来说&#xff0c;对方的心意&#xff0c;才是最好的房子。"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–递归,回溯,剪枝的综合应用(2) 大家好,今天为大家带来的是算法系列--递归,回溯,剪枝的综合应用(2) 一.括号…

Java EE:Thread类中run和start的区别

目录 1、run 2、start 总结&#xff1a; Java 的线程是通过 java.lang.Thread 类来实现的。JVM 启动时会有一个由主方法所定义的线程&#xff08;main线程&#xff09;。可以通过创建 Thread 的实例来创建新的线程&#xff0c;从而实现多线程。 每个线程都是通过某个特定的 …