前端单存储库的利与弊

单存储库(Monorepos)不仅仅适用于大公司。事实上,通过让开发人员站在同一战线,单存储库可以为前端开发团队带来好处。

译自The Case for (and Against) Monorepos on the Frontend,作者 Loraine Lawson 是一位资深的技术记者,她报道了 25 年的数据集成到安全性等技术问题。在加入 The New Stack 之前,她担任银行技术网站 Bank Automation News 的编辑。

尽管单存储库(monorepo)在目前仍然主要是早期采用者的领域,但使用单存储库而不是多存储库的兴趣日益增长。

当 Vercel 添加了对单存储库的支持后,我们想知道单存储库如何提升前端开发者的效率,所以我们采访了 Nrwl 公司的联合创始人兼 CTOVictor Savkin,该公司开发了一个名为Nx的单存储库/持续集成工具。Nrwl 也是开源单存储库工具 Lerna的维护者。

单存储库的定义

首先,理解什么是单存储库很重要。是的,它是一个网项目或应用的单个存储库,但这并不意味着单存储库就是一个包含所有代码的庞然大物。单存储库是一种使用其他方法会变得一团糟,使用之后会井井有条的方法,就像我的政府老师常说的那样。Savkin 说,像 NX、Lerna 和TurboRepo这样的单存储库工具有助于在存储库中建立秩序。

"它是一种技术解决方案,用于解决人际间的问题,即降低协作的成本。" Savkin说。 "这就是为什么单存储库在影响力方面更类似于 GitHub,而不是捆绑器之类的东西,因为捆绑器是一种技术问题。使用单存储库,它必须快速完成所有这些操作,但影响更多的是......现在团队可以更快地协作,员工可以更快地交付东西。"

他还补充说,团队的认可非常重要。

"基本上,单存储库大大降低了协作的成本。"他说。"这是它的主要优势,你基本上希望将协作成本降低到更低的水平。"

事实上,协作非常关键,以至于如果一个组织有两个很少互动的单独的开发团队------可能是因为并购------那么最好保持它们分开,而不是转向单存储库。

驱动单存储库的因素

Savkin 将单体开发比作一条没有交通信号灯或法规的道路------他说,人们就像非常疯狂地在道路上骑行,但是只要使用道路的人很少,这可能不是问题。但是当道路开始出现大量交通时,就会导致事故。为了解决这个问题,创建了多条道路(多存储库),以确保交通不会相互碰撞。

"我们有多条道路。我有自己的私人道路,在我自己的私人道路上,我以特定的方式驾驶,我不希望任何人告诉我如何驾驶,"他说,不过他补充说"将这个私人道路集成到更大的系统中很困难。"

单存储库提供了一个替代方案,其中有交通法规和停止标志,这使集成和扩展更容易。

"一个存储库不仅是一个单元,还有多个单元,单元之间有明确的关系,"Savkin 解释道。

前端收益

单存储库不仅仅适用于企业应用和谷歌这样的大公司,Savkin说。但就目前而言,多存储库倾向于是最常见的方法,每个业务线或功能都有自己的存储库。以银行为例,其网站或应用程序可能有信用卡部分和汽车贷款部分。但是,如果需要在部门之间共享一条通用消息、函数甚至只是通用设计更改,该怎么办?他说,多存储库会使这更困难。

"现在我需要与团队A、团队B进行协调。"Savkin说。"在多存储库的情况下,这可能需要几个月的时间。"

他补充说,在单存储库中,只需一天的时间就可以轻松进行这一更改。它还使跨开发团队共享组件和库成为可能。

根据总部位于旧金山的在线表单公司Jotfrom的前端架构师兼工程主管Berkay Aydin的说法,单存储库帮助该公司减少了前端的技术债务。上周,Aydin撰文介绍了该公司向前端单存储库的转变

"我们不再有多个配置或构建过程。" Aydin写道。"现在,我们可以确定每个应用程序都使用相同的配置。例如,如果我们更新浏览器支持,我们知道公司的每个部分都具有相同的浏览器支持。"

他补充说,使用pnpm工作区功能和一些内部样板可以在几秒钟内轻松共享代码。Aydin列出的其他优势包括:

  • 常见的开发环境,使创建通用命令更加容易;
  • 对新员工的更好入职培训;
  • 更容易的重构;
  • 缩短总体构建时间;
  • 以及依赖项意识,因为开发人员可以看到应用程序和库之间的连接关系。

劣势

Aydin 还分享了单存储库的劣势以及他的团队如何解决这些劣势。他提到的劣势是:

  • 将现有存储库迁移到单存储库很困难;
  • 如果源存储库正在积极开发,进行关键更改意味着需要在周末或非高峰时间工作;
  • 管理构建队列;
  • 难以调试的缓存;
  • 可以预见的,对开发人员的约束更多。他写道,在单个存储库上尝试新技术更容易。

Savkin 承认迁移到单存储库可能很困难,但这不是技术问题,而是组织问题。

"更困难的部分是说:'嗯,现在我能重新设计应用程序,以便利用单存储库工具吗?' - 例如,将其拆分得更细,引入更多分区或共享更多代码。"他说。"这更难,因为这需要架构思维。从机械上说,我有两个应用程序,我想把它们放在同一个单存储库中并共享一个组件------这很琐碎;你可以在一天之内完成。"

本文在云云众生yylives.cc/)首发,欢迎大家访问。

相关推荐
德育处主任5 小时前
聚沙成塔,三步成书:GitBook极简入门教程
前端·git·电子书
m0_635647485 小时前
git管理github上的repository
git·github
Jiude6 小时前
基于开源项目开发公司项目,如何同步开源仓库的最新更新(以vben为例)
git·开源·github
PAK向日葵6 小时前
【软件工程】如何使用Git Rebase同步团队开发进度
git·面试
枫叶落雨2229 小时前
git checkout C1解释
git
Dontla9 小时前
git stash介绍(临时保存当前工作目录中尚未提交的修改)
git
黎相思10 小时前
Git多人协作
git
一只名叫Me的猫11 小时前
Git 常用命令 - 服务器用
git
黎相思11 小时前
Git基本操作
git
Auv开心21 小时前
【git stash切换】
经验分享·git