Lukas Holzer:Juri,关于 monorepos 有哪些常见的误解?

Innovative solutions for data management and analysis.
Post Reply
shaownhasan
Posts: 531
Joined: Sun Dec 22, 2024 6:28 pm

Lukas Holzer:Juri,关于 monorepos 有哪些常见的误解?

Post by shaownhasan »

monorepos 的主要优点是什么?
代码可重用性:共享代码变得更加简单。您可以将可重用的功能提取到 monorepo 中的本地库中并立即共享,而不是跨各种存储库克隆它或处理通常的 NPM 包舞蹈
一致性和简化的开发流程:因为一切都集 臺灣電話號碼 中在一处,所以一致性变得更易于管理。统一的工具、CI 实践和项目结构可以简化工作流程,使团队过渡更加顺利,新成员入职也不会那么痛苦。
简单的脚手架:在多回购设置中,启动一个新项目可能很复杂。需要新的存储库结构、工具、linting、配置部署和持续集成,这些已经在单一存储库中配置。
更快的反馈循环和增强的协作:在单一存储库中,您不需要发布和分发 NPM 包;你就分开吧。它可以加快反馈速度,无论是实验还是重构,并帮助不同的团队一起工作,而不会互相干扰。
安全性:推送关键安全更新对于组织来说至关重要。在单一存储库中,问题是更新/修复受影响的部分并将新版本部署到生产中。需要推出安全更新吗?发布修补过的 NPM 包,特别是联系团队更新其依赖项可能会很慢。在单一存储库中,麻烦更少。它通常涉及修复/更新专用分支中受影响的部分,向主分支发送 PR,以及发布受影响的应用程序或库。
统一版本控制:使用单一存储库,您可以根据需要使用多版本或单版本控制。但是,通过保持项目之间的版本同步,您可以避免许多常见的版本冲突问题。

monorepo 的突出之处不仅在于其共置代码的能力,还在于引入定义的关系并增强工具来优化构建和测试运行。这些功能很大程度上归功于构建系统,通常与 monorepo 工具同义。在 JavaScript 生态系统中,领先的参与者包括 Nx、Lerna 和 TurboRepo。

要全面了解各种 monorepo 工具及其功能,请查看 https://monorepo.tools/。它提供了他们能力的出色分解

为了进一步探索 Netlify 上的单一仓库体验,我们很高兴介绍 Juri Strumpflohner。作为 Google 开发者专家和 Nx 开发者体验高级总监,Juri 完全有能力指导我们了解 Nx 为大型组织工作带来的好处。


Juri Strumpflohner:首先,这个名字有很多问题。我通常更喜欢“多项目存储库”这个术语。问题是,人们认为这是为了构建一个单一的代码库,因为你将所有代码都放在一个存储库中。因此,他们担心最终无法独立部署或在单一仓库内开发过程中失去很多自由。两者都不是真的。另一个常见的误解是所谓的“单一回购公司”。我最近听到这个术语,它表示一家公司,所有代码都在一个巨大的单一存储库中。根据我的经验,这种情况很少见,即使在大型企业中也是如此。通常,您会发现潜在的多个 monorepos 和一些“poly-repos”的混合情况,并且您仍然通过包装为包的构建工件(例如用于 JS 生态系统的 NPM)在这些之间共享一些代码。

Lukas Holzer:所以你是说每个人都应该使用 monorepo?您什么时候应该选择单一存储库?您观察到的常见挑战是什么?

Juri Strumpflohner:不,与软件开发中的大多数事情一样,它不是一个万能的解决方案。当您有一些相关的项目时,拥有单一存储库是最有意义的,因为它们是更大的产品或用户体验的一部分,或者因为它们属于同一组织单位。您想要实现的是帮助促进密切相关的团队之间的沟通和协作,从而提高他们的生产力。我见过的大多数挑战都是由于天真地接触单一存储库而出现的。需要对如何构建 monorepo、如何定义 monorepo 中项目之间的边界以及如何有效地设置 CI 进行一些规划。这也是 monorepo 工具发挥作用的地方。您可以轻松地使用常见 JS 包管理器(如 NPM、Yarn 或 PNPM 工作区)中内置的 monorepo 功能。不过,从长远来看,您可能想要研究更复杂的工具。
Post Reply