参考资料:
白鹭引擎首席架构师@王泽:框架开发中的基础设施搭建
ppt | 视频
基于lerna+yarn workspaces的monorepo项目实践 | 源码demo
vivo基于Lerna 管理 packages的Monorepo项目最佳实践、
雪碧大佬:如何管理前端项目中的复杂依赖关系
字节跳动杨健:基于lerna和yarn workspace的monorepo工作流
白鹭
与业务类功能开发相比,框架对代码质量和可维护性会提出更高的要求,诸如模块拆分、单元测试、版本控制等
白鹭引擎最新产品 Egret Pro 在这方面的工程实践。包括:
- 使用 monorepo 的设计思想以及 rush.js 进行代码管理
- 使用 mocha / karma / sinon 进行单元测试
- 使用 ts-morph 进行源代码检查与批处理
只想升级一个模块,比如common里 的 某个 log模块,我更新了log只想更新这一个 而不是将common模块都更新
解决办法:log一个仓库,一个package.json
问题:维护多个repo太累了
终极解决方案:monorepo
components
- component-a # 依赖lib-b、 my-compile
- package.json
libraries
- lib-a
- lib-b #依赖lib-a、 my-compile
project
- proj-a # 依赖component-a、 my-compile
utils
- my-compile
每个下面都有单独的package.json
如果上游的my-compile变化,那么下游的 lib-b\componrnt-a\proj-a 都要测试回归