介绍
你好kude0!
如果您像我一样,您可能会花一些时间处理微服务,并且已经习惯了他们提供的灵活性和独立性。但是,随着您项目的发展和发展,您可能会发现自己会感到管理多个代码库以及整个团队的协调变化的开销。
这就是monorepos的来源。莫诺普(MonorePo)是一个单个版本控制存储库,其中包含多个项目,每个项目都有自己的依赖关系集。这可以更好地协作和更轻松的代码管理,因为一切都位于一个地方。
为什么要使用?
通常(在JavaScript生态系统中),MonorePos应该易于维护,设置和部署!想象一下,在Polyrepo微服务中为多个服务进行修复,甚至在API和应用程序中进行功能。您必须克隆并安装每个服务的依赖项,测试和部署每个仓库。似乎有很多工作,对吧?但是,使用MonorePo,您可以在一个存储库中轻松地执行此操作,并将更改应用于GO!那就是Monorepo的美丽。
为什么不使用它?
开玩笑,设置MonorePo确实有一些麻烦,尤其是如果您不在JavaScript生态系统中。
-
以语言为导向 - 虽然可能有语言特定的支持来设置它,但仍可能需要 lot !另外,如果您有多语言的微服务设置,则需要花费一些时间才能完美钉住它!
-
不一致 - 对于较大的团队,可能很难在相同/不同的文件中维护众多文件更改,这可能会导致破坏应用程序。但是,这可以解决哪些团队应拥有服务或应用程序。
-
机器困境 - 由于项目内部有很多服务,因此在安装依赖项时可能会挂起,并同时运行多个服务。这可能是CI/CD上的一个问题,因为基本跑步者可能无法容纳大量的包裹缓存/上传的工件,这可能会给您带来额外的费用。
设置时我应该考虑什么?
在JavaScript生态系统中,已经存在几个公用事业来支持MonorePo架构的建立。 NPM,PNPM和YARN是用于此目的的重要工具。这些工具提供了宝贵的功能和功能,可促进MonorePo项目的管理和组织,简化开发工作流程并改善多个软件包的代码共享。
为了设置节点JS monorepo,您只需要一件事,这是节点本身。安装节点后,您可以选择想要如何从头开始配置项目的任何工具,或者您也可能需要考虑使用构建系统(例如Turborepo或Nx)进行快速,更轻松的设置。
tldr;
虽然Monorepo解决了很多问题,但它也有缺点。缩放它可能会花费您一些或更多,但可能会节省您的时间。
供参考,您可以查看使用纱线工作区的旧repo。您可以在本地分叉,克隆并与之一起玩。愉快的编码!
除了JavaScript外,还使用其他语言讨论MonorePo设置的实施或文章,或者对MonorePos进行任何赞赏/厌恶,请发表评论!我很想看到一些讨论! ð