前端单存储库的利与弊

单存储库(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/)首发,欢迎大家访问。

相关推荐
winner888141 分钟前
git merge 冲突 解决 show case
java·git·git merge·git冲突
玩电脑的辣条哥5 小时前
怎么给git动图扣除背景?
git·抠图
谢家小布柔7 小时前
git中的多人协作
git
isolusion8 小时前
git分支管理及策略
git
isolusion8 小时前
git仓库的基本概念和流程以及一些基本命令
git
scoone9 小时前
VSCode 中 Git 功能比较:内置 Git、GitLens 与 Git History 插件
ide·git·vscode
赛博末影猫10 小时前
git全教程(长期更新)
git
Y编程小白10 小时前
Git版本控制工具--基础命令和分支管理
大数据·git·elasticsearch
Pafey14 小时前
git 删除鉴权缓存及账号信息
git·缓存
databook16 小时前
解锁 Git Log 更多实用技巧
git