基于lerna和yarn workspace的monorepo工作流,通过结合gitlab、lerna与yarn,我们能有效管理多个关联项目。monorepo管理能显著提升团队协作与代码复用,但同时也带来了技术挑战。采用yarn进行依赖管理,lerna则用于发布,以实现项目高效协同。在monorepo项目中,开发流程面临多场景。搭建环境时,通过yarn install自动...
monorepo管理代码有众多好处,但是也带来了很多的技术上的挑战,github上的很多的项目都是使用lerna管理monorepo项目,我们探讨下在gitlab上也通过lerna和yarn workspace结合来管理项目。由于yarn和lerna在功能上有较多的重叠,我们采用yarn官方推荐的做法,用yarn来处理依赖问题,用lerna来处理发布问题。能用yarn做的就用yarn做...
),这里的“单”和“多”是指每个仓库中所管理的模块数量。...虽然拆分子仓库、拆分子 npm 包是进行项目隔离的天然方案,但当仓库内容出现关联时,没有任何一种调试方式比源码放在一起更高效。结合我们项目的实际场景和业务需要,天然的 MonoRepo !...上图中提到的利用相关
lerna version 的作用是进行 version bump,支持手动和自动两种模式 只发布某个 package 不支持,lerna 官方不支持仅发布某个 package,见https://github.com/lerna/lerna/issues/1691,如果需要,只能自己手动的进入package进行发布,这样lerna自带的各种功能就需要手动完成且可能和lerna的功能相互冲突 由于lerna 会自动的监测...
因为各个 package 理论上都是独立的,所以每个 package 都维护着自己的 dependencies,而很大的可能性,package 之间有不少相同的依赖,而这就可能使install时出现重复安装,如果package之间相互依赖,开发人员需要在本地手动执行npm link等。目前最常见的 monorepo问题 解决方案是使用Lerna工具和workspaces特性。
Lerna 是一个管理多个 npm 模块的工具,是 Babel 自己用来维护自己的 Monorepo 并开源出的一个项目。优化维护多包的工作流,解决多个包互相依赖,且发布需要手动维护多个包的问题。Lerna 现在已经被很多著名的项目组织使用,如:Babel, React, Vue, Angular, Ember, Meteor, Jest 。
monorepo: 不仅需要删除root的node_modules的编译产物还需要删除各个package里的node_modules以及编译产物 解决方式:使用lerna clean来删除所有的node_modules,使用yarn workspaces run clean来执行所有package的清理工作 $ lerna clean # 清理所有的node_modules $ yarn workspaces run clean # 执行所有pack...