背景
我们服务于政务行业,正在打造一个集代码开发、数据集成、应用管理、一体化运维监控的应用支撑平台。
以此为导向,作为开发的第一步,代码工程创建应当为后续的集成、管理及监控等服务。所以区别于一般的cli工具,我们要做的工具还有以下特点:
1、支持在web页面进行脚手架参数配置,生成工程代码框架,以便将创建的工程与应用关联进行管控
2、除了cli工具常规的babel、less、sass之类基础功能,需要支持一些政务中的常用功能如监控、日志、水印等,还有前端微服务框架
3、部分模块支持二级配置,如微前端需配置主/子应用,水印需配置内容,监控需配置应用的标识等等
技术难点
我们常用的cli工具,如vue和react的cli工具,基本都是静态模版,即准备几套工程模版,如移动端一套,pc端一套,根据参数拉取对应的代码模版即可。
而以我们的功能模块数量和参数数量,显然无法采用这种方式,需根据配置实时生成工程代码。
以下是我们需要解决的问题:
1、如何将某个扩展模块特有代码文件或者代码片段注入工程,并在未选择该模块时避免这些代码污染工程
2、不同扩展模块修改同一个文件避免冲突、依赖相同npm模块时避免重复注入
3、最后呈现的代码需简洁优雅,为最佳实践,不能将对工程配置的判断语句带到生成的工程代码中
4、对接web页面配置并下载工程代码等
5、支持扩展模块的新增及优化,bug修复等,并支持在不升级cli情况下修复扩展模块的bug
6、cli及扩展模