第一次接触monorepo是去年年初,说来非常巧合,当时有个活动页的需求,因为webpack配的比较菜,听一哥们说parcel开箱即用写活动页无敌,然后我就去看了。看到parcel用了lerna,这激起了我的好奇,觉得这东西挺玄学,一条命令能帮你安装指定工程下的所有依赖,正好当时在学nodejs也写了一些工具,比如国际化翻译工具、本地mock server、前端页面监控等,把这些工程放在一起,用lerna包起来,只需install一次,就可下载所有依赖,这样就实现n个项目变成一个项目,形成闭环。
当然上面的理解是完全不够的,monorepo顾名思义mono + repository多个仓库并成单一仓库。monorepo的使用场景是多模块相互依赖,或者n模块有共同依赖的模块,那么相互引用必然非常麻烦,毕竟谁也不愿意看到一大堆相对路径,现在随着ts的普及,业务开发重度依赖代码提示,如果本身n个模块各自就是独立的项目or库,那tsconfig中的path路径该如何配呢?更要命的是,如果A模块引入了第三方库,而core模块没有,core恰好引入和A的那个方法,还得给core手动yarn add depxxx,如果出现类似这种很凌乱的情况,那就不要犹豫,直接上monorepo吧,接入方便,只是在外包了层壳。
yarn workspace
市面上monorepo的解决方案不少,最主流的是yarn workspace + lerna,毕竟两大新坑vue3和element+也是这么做的,依旧是以解决问题的角度出发,来看下workspace能给我们带来什么?我对yarn官网的例子进行了拓展:
root
|---

本文介绍了前端项目使用 Monorepo 进行管理的优势和实践,包括 Yarn Workspace 和 Lerna 的使用。通过 Monorepo,可以方便地管理多个相互依赖的模块,简化依赖安装和版本控制,提高开发效率。文章提到了如何配置 Yarn Workspace 以解决模块间的依赖问题,以及 Lerna 在项目构建和发布的帮助,特别适合于大型开源项目和 UI 库的管理。
最低0.47元/天 解锁文章
1569

被折叠的 条评论
为什么被折叠?



