业务脚手架搭建——设计篇

1,038 阅读3分钟

image.png

介绍

快速搭建一个基于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

image.png

cli模型

结构分层

@thrusterx/cli 设计分为 3 层

  • 业务组件层:以组件+物料为基础,结合风格定制
  • 功能模块层:以模板为基础,配合Block+Core渐进增强
  • 通用逻辑层:差异化抹平,提供公共服务

模型化

  • Cli 负责处理命令行指令,并提供命令行交互
  • Block 提供基础的组件支持
  • Core 负责通用逻辑处理
  • Template 负责模板生成
  • Build 负责构建及本地开发

image.png

支持扩展

  • template 支持不同领域的扩展(H5,PC...),搭配不同layout布局满足场景需求
  • Core 支持插件化,提供通用模块能力支持

image.png

插件

约定以@thrusterx/config-xxx,@thrusterx/plugin-xxx形式集成到工程中,可以通过开发不同的插件来支持各业务域的需求

image.png

image.png

使用脚手架

全局安装

  • -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