LegoFlow Next
➪ 如何创建项目
➪ 开发构建核心
➪ 解构目的
过往我们会把开发构建前端依赖的 node_modules(例如 webpack
\ loaders
等)都放置到全局 CLI 上,由全局的 CLI 统筹所有的开发构建任务。
这样慢慢 CLI 功能就会变得越来越臃肿庞大,更加需要不断去维持往下兼容,导致 CLI 技术债务积累到一定程度就需要进行断层更新。
LegoFlow v3 为了彻底解决这样的问题,解构分离 CLI 与 Engine。
CLI 单单作为创建项目脚手架的处理器,基本功能即为拉取 远程模板 进而创建项目。
Engine 作为项目的依赖,内置在项目 node_modules 内,基本功能为提供 基本的 webpack 配置,以及 开发 / 构建 两个阶段的指令。
这样的解耦方式,虽然根源解决了上述问题,但同时引发两个可预见的问题:
- 项目依赖 node_modules 占用磁盘空间变大,初始安装时间变长
- 单次 CI 构建耗时变长
问题 1 尚可接受。问题 2 严重影响构建发版效率,因而延展出优化 lf next CI 构建方案:
- CI Cache 缓存策略
在多次缓存设置中,发现命中缓存的稳定性并不可靠
- Docker Image 容器主动缓存
容器内建立固定路径下的缓存 node_modules,主动 cp 到目标项目内,绝大部分依赖可复用情况下,安装效率有效优化