返回顶部
首页 > 资讯 > 精选 >前端工程Monorepo项目管理方式是什么
  • 468
分享到

前端工程Monorepo项目管理方式是什么

2023-07-02 16:07:51 468人浏览 独家记忆
摘要

这篇“前端工程Monorepo项目管理方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“前端工程Monorepo项目管

这篇“前端工程Monorepo项目管理方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“前端工程Monorepo项目管理方式是什么”文章吧。

    什么是 Monorepo?

    Monorepo 其实不是一个新的概念,在软件工程领域,它已经有着十多年的历史了。概念上很好理解,就是把多个项目放在一个仓库里面,相对立的是传统的 MultiRepo 模式,即每个项目对应一个单独的仓库来分散管理。

    前端工程Monorepo项目管理方式是什么

    现代的前端工程已经越来越离不开 Monorepo 了,无论是业务代码还是工具库,越来越多的项目已经采用 Monorepo 的方式来进行开发Google 宁愿把所有的代码都放在一个 Monorepo 工程下面,Vue 3、Yarn、Npm7 等等知名开源项目的源码也是采用 Monorepo 的方式来进行管理的。

    一般 Monorepo 的目录如下所示,在 packages 存放多个子项目,并且每个子项目都有自己的package.JSON:

    ├── packages|   ├── pkg1|   |   ├── package.json|   ├── pkg2|   |   ├── package.json├── package.json

    那 Monorepo 究竟有什么魔力,让大家如此推崇,落地如此之广呢?

    MultiRepo 之痛

    要想知道 Monorepo 的优势,首先得弄清楚之前的开发方式有什么痛点。

    之前传统的方式MultiRepo当中,每个项目都对应单独的一个代码仓库。我之前也是用这种方式开发的,是真真切切地感受到了这种方式带来的诸多弊端。现在就和大家一一分享一下。

    1.代码复用

    在维护多个项目的时候,有一些逻辑很有可能会被多次用到,比如一些基础的组件、工具函数,或者一些配置,你可能会想: 要不把代码直接 copy 过来,多省事儿!但有个问题是,如果这些代码出现 bug、或者需要做一些调整的时候,就得修改多份,维护成本越来越高。

    那如何来解决这个问题呢?比较好的方式是将公共的逻辑代码抽取出来,作为一个 npm 包进行发布,一旦需要改动,只需要改动一份代码,然后 publish 就行了。

    但这真的就完美解决了么?我举个例子,比如你引入了 1.1.0 版本的 A 包,某个工具函数出现问题了,你需要做这些事情:

    • 去修改一个工具函数的代码

    • 发布1.1.1版本的新包

    • 项目中安装新版本的 A。

    可能只是改了一行代码,需要走这么多流程。然而开发阶段是很难保证不出 bug 的,如果有个按钮需要改个样式,又需要把上面的流程重新走一遍......停下来想想,这些重复的步骤真的是必须的吗?我们只是想复用一下代码,为什么每次修改代码都这么复杂?

    上述的问题其实是 MultiRepo普遍存在的问题,因为不同的仓库工作区的割裂,导致复用代码的成本很高,开发调试的流程繁琐,甚至在基础库频繁改动的情况下让人感到很抓狂,体验很差。

    2.版本管理

    在 MultiRepo 的开发方式下,依赖包的版本管理有时候是一个特别玄学的问题。比如说刚开始一个工具包版本是 v1.0.0,有诸多项目都依赖于这个工具包,但在某个时刻,这个工具包发了一个 break change 版本,和原来版本的 api 完全不兼容。而事实上有些项目并没有升级这个依赖,导致一些莫名的报错。

    当项目多了之后,很容易出现这种依赖更新不及时的情况。这又是一个痛点。

    3.项目基建

    由于在 MultiRepo 当中,各个项目的工作流是割裂的,因此每个项目需要单独配置开发环境、配置 CI 流程、配置部署发布流程等等,甚至每个项目都有自己单独的一套脚手架工具。

    其实,很容易发现这些项目里的很多基建的逻辑都是重复的,如果是 10 个项目,就需要维护 10 份基建的流程,逻辑重复不说,各个项目间存在构建、部署和发布的规范不能统一的情况,这样维护起来就更加麻烦了。

    Monorepo 的收益

    说清楚 MultiRepo 的痛点之后,相信你也大概能理解为什么要诞生Monorepo这个技术了。现在就来细致地分析一下Monorepo到底给现代的前端工程带来了哪些收益。

    首先是工作流的一致性,由于所有的项目放在一个仓库当中,复用起来非常方便,如果有依赖的代码变动,那么用到这个依赖的项目当中会立马感知到。并且所有的项目都是使用最新的代码,不会产生其它项目版本更新不及时的情况。

    其次是项目基建成本的降低,所有项目复用一套标准的工具和规范,无需切换开发环境,如果有新的项目接入,也可以直接复用已有的基建流程,比如 CI 流程、构建和发布流程。这样只需要很少的人来维护所有项目的基建,维护成本也大大减低。

    再者,团队协作也更加容易,一方面大家都在一个仓库开发,能够方便地共享和复用代码,方便检索项目源码,另一方面,git commit 的历史记录也支持以功能为单位进行提交,之前对于某个功能的提交,需要改好几个仓库,提交多个 commit,现在只需要提交一次,简化了 commit 记录,方便协作。

    Monorepo 的落地

    如果你还从来没接触过 Monorepo 的开发,到这可能你会疑惑了: 刚刚说了这么多 Monorepo 的好处,可是我还是不知道怎么用啊!是直接把所有的代码全部搬到一个仓库就可以了吗?

    当然不是,在实际场景来落地 Monorepo,需要一套完整的工程体系来进行支撑,因为基于 Monorepo 的项目管理,绝不是仅仅代码放到一起就可以的,还需要考虑项目间依赖分析、依赖安装、构建流程、测试流程、CI 及发布流程等诸多工程环节,同时还要考虑项目规模到达一定程度后的性能问题,比如项目构建/测试时间过长需要进行增量构建/测试按需执行 CI等等,在实现全面工程化能力的同时,也需要兼顾到性能问题。

    因此,要想从零开始定制一套完善的 Monorepo 的工程化工具,是一件难度很高的事情。不过社区已经提供了一些比较成熟的方案,我们可以拿来进行定制,或者对于一些上层的方案直接拿来使用。

    其中比较底层的方案比如 lerna,封装了 Monorepo 中的依赖安装、脚本批量执行等等基本的功能,但没有一套构建、测试、部署的工具链,整体 Monorepo 功能比较弱,但要用到业务项目当中,往往需要基于它进行顶层能力的封装,提供全面工程能力的支撑。

    当然也有一些集成的 Monorepo 方案,比如rushstack,提供从初始化、开发、构建、测试到部署的全流程能力,有一套比较完整的 Monorepo 基础设施,适合直接拿来进行业务项目的开发。不过由于这些顶层方案内部各种流程和工具链都已经非常完善了,如果要基于这些方案来定制,适配和维护的成本过高,基本是不可行的。

    以上就是关于“前端工程Monorepo项目管理方式是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: 前端工程Monorepo项目管理方式是什么

    本文链接: https://lsjlt.com/news/343089.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 前端工程Monorepo项目管理方式是什么
      这篇“前端工程Monorepo项目管理方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“前端工程Monorepo项目管...
      99+
      2023-07-02
    • 前端工程Monorepo项目管理方式
      目录什么是 MonorepoMultiRepo 之痛1.代码复用2.版本管理3.项目基建Monorepo 的收益Monorepo 的落地总结什么是 Monorepo 随着前端工程日益...
      99+
      2024-04-02
    • JS前端架构pnpm构建Monorepo方式管理demo
      目录 写在前面 什么是Monorepo?什么是pnpm? 搞一个Monorepo的demo玩玩 安装依赖 packageA中引用packageB 写在最后 写在前面 Monorepo...
      99+
      2024-04-02
    • JS前端架构pnpm怎么构建Monorepo方式管理demo
      今天小编给大家分享一下JS前端架构pnpm怎么构建Monorepo方式管理demo的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
      99+
      2023-07-02
    • 鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
      Java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总...
      99+
      2023-09-05
      spring cloud java 企业工程管理系统源码
    • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景
       鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、...
      99+
      2023-10-27
      1024程序员节
    • 前端工程化是什么意思
      本篇内容主要讲解“前端工程化是什么意思”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“前端工程化是什么意思”吧!工程及工程化一个工程其实就是一个项目,比如一个网站...
      99+
      2024-04-02
    • 云服务器部署前端项目是什么
      云服务器部署前端项目通常是在云平台上进行的,以下是一些常见的云服务器部署方法: 在线创建项目:可以通过云服务器创建项目或在公共云提供商(例如AWS, Google等)上创建项目。在线创建项目时,您需要将您的域名和电子邮件地址添加到项目名...
      99+
      2023-10-26
      服务器 项目
    • SpringBoot项目依赖管理的方法是什么
      Spring Boot项目的依赖管理方法有以下几种: Maven:使用Maven作为构建工具,可以在项目的pom.xml文件中定...
      99+
      2023-10-27
      SpringBoot
    • web前后端交互方式是什么
      这篇文章主要讲解了“web前后端交互方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前后端交互方式是什么”吧!  正如我们所知,一个完整的IT项目是由多个不同岗位共同完成的,包...
      99+
      2023-06-27
    • springboot vue项目管理前后端怎么实现编辑功能
      这篇文章主要介绍了springboot vue项目管理前后端怎么实现编辑功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot vue项目管理前后端怎么实现编辑功能文章都会有...
      99+
      2023-06-30
    • 云服务器部署前端项目是什么意思
      云服务器部署前端项目通常是指将网站部署到云服务器上,以便用户能够访问该网站或应用程序。云服务器部署前端项目是指使用云服务器来实现Web应用程序的前端开发,通常包括以下几个步骤: 安装云服务器。用户需要选择合适的云服务器品牌和版本,以及云...
      99+
      2023-10-27
      服务器 项目
    • 腾讯云服务器部署前端项目是什么
      一、服务器搭建 腾讯云服务器的搭建通常涉及到以下几个步骤: 购买腾讯云服务器:首先需要购买腾讯云服务器,一般选择多种不同品牌的服务器可供选择,需要根据自身需求进行选择。 选择云服务器品牌和型号:根据自身的实际需求选择合适的云服务器品牌和...
      99+
      2023-10-27
      腾讯 服务器 项目
    • 前端工程师的核心工作职能是什么?
      前端工程师的核心工作职能是什么? 随着互联网技术的不断发展,前端工程师的角色在互联网行业中变得越来越重要。那么,前端工程师的核心工作职能到底是什么呢?让我们深入探讨一下。 首先,前端工...
      99+
      2024-04-02
    • 前端浏览器的工作原理是什么
      这期内容当中小编将会给大家带来有关前端浏览器的工作原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。浏览器架构在讲浏览器架构之前,先理解两个概念,进程和线程。进程(process)是程序的一次执行过...
      99+
      2023-06-03
    • 云服务器部署前端项目是什么意思啊
      部署前端项目可以分为以下几个步骤: 选择云服务器供应商:首先,用户需要选择一家可靠的云服务器供应商,可以从多个供应商中进行比较,包括品牌、性能、价格等方面。在选择供应商时,需要考虑自身的需求和预算,选择最适合自己的供应商。 选择云服务器...
      99+
      2023-10-27
      服务器 项目
    • 项目任务管理工具GoodTask for Mac有什么用
      这篇文章主要介绍了项目任务管理工具GoodTask for Mac有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。GoodTask Mac激活版是一款功能强大的项目任务...
      99+
      2023-06-06
    • 为什么Git是PHP项目管理的首选?
      Git是一个流行的分布式版本控制系统,被广泛应用于开源软件和商业软件开发中。对于PHP项目,Git是首选的版本控制系统,这是因为Git提供了许多优点,使其成为PHP项目管理的首选。 分布式版本控制系统 Git是一个分布式版本控制系统,这...
      99+
      2023-06-30
      http 关键字 git
    • 腾讯云服务器部署前端项目是什么意思
      腾讯云服务器部署前端项目是指将前端代码部署到腾讯云服务器上,使得用户可以通过互联网访问该前端项目。在部署前端项目之前,需要先将前端代码打包成静态文件,然后将这些静态文件上传到腾讯云服务器上。一旦上传完成,就可以通过配置服务器的域名和端口号,...
      99+
      2023-10-26
      腾讯 服务器 项目
    • 利用yarn代替npm管理前端项目模块依赖的方法详解
      本文主要给大家介绍了关于yarn代替npm管理前端项目模块依赖的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 什么是 yarn? 简单来说,yarn 是一个与 npm ...
      99+
      2022-06-04
      详解 模块 方法
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作