介绍
快速搭建一个基于vite + vue3工程的cli工具。上一篇文章《业务脚手架搭建——基础篇》已经对脚手架基础工具做了详细介绍,这篇文章我们将从cli的具体实现流程展开介绍一下设计实现。
- 工程模版内容支持根据 CLI 动态交互配置,通过ejs动态配置,具体可配置内容可看下文参数说明
- 服务模版多种语言可选模 typescript/javascript (建议选择 typescript,目前只添加了typescript 模版)
- 工程模版编码规范已完善,已添加 eslint、prettier、tsconfig 配置等,并且支持自动保存校验, .vscode 中 settings.json ,.husky中 pre-commit ,commit-msg已配置 。
- 提供了基本项目结构 api、layouts、router 、store配置等,可直接使用template中提供的基础功能。
背景
2021年12月融合了(...)三个前端业务团队建立了thrusterx前端技术组,各业务组之间就各业务场景的基础项目建设存在较大差异(技术栈、工具库、代码规范...),技术体系自成一派,各业务系统没有进行合理的分层设计,不具备复用性,技术资源受到了明显的限制,开发同学永远都卷在低水平线,随着业务的不断膨胀,开发一个功能越来越复杂,涉及的链路越来越长,花费的代价越来越高。
2022,前端基础建设的主题是 收敛与统一
技术实现
cli流程图
在建立模板前,先考虑哪些需要统一,哪些需要分离,因此我们需要建立一套流程,inquirer,相信写过 cli 的小伙伴都有用过这个模块,我理解它就是一个问答模型配置系统(更通俗的说就是个问答流程,1题选择A,跳到 3 题,1 题选择B跳到2
cli模型
结构分层
@thrusterx/cli 设计分为 3 层
- 业务组件层:以组件+物料为基础,结合风格定制
- 功能模块层:以模板为基础,配合Block+Core渐进增强
- 通用逻辑层:差异化抹平,提供公共服务
模型化
- Cli 负责处理命令行指令,并提供命令行交互
- Block 提供基础的组件支持
- Core 负责通用逻辑处理
- Template 负责模板生成
- Build 负责构建及本地开发
支持扩展
- template 支持不同领域的扩展(H5,PC...),搭配不同layout布局满足场景需求
- Core 支持插件化,提供通用模块能力支持
插件
约定以@thrusterx/config-xxx,@thrusterx/plugin-xxx形式集成到工程中,可以通过开发不同的插件来支持各业务域的需求
使用脚手架
全局安装
- -d 按照默认配置快速生成
- -c 脚手架集成config配置
- -a 脚手架集成plugins配置
- -u 生成后不自动执行install
- -V 查询脚手架版本
npm i @thrusterx/cli -g --registry=xxxx
t7x init package-name -d
直接使用
npx @thrusterx/cli init package-name -d