前端简易脚手架搭建

原文见:https://www.yuque.com/asuncat/blog/ql8p2g

公司现有基于umi搭建的pc中后台项目模板,有基于uni-app搭建的多端项目模板。每次新建项目,需要去github下载相应的模板,所以就想自己写个脚手架,主要是根据输入值自动下载gitlab仓库的代码。
脚手架分析
主要是想脚手架与项目模板解耦
● 脚手架负责获取模板的功能。通过命令行与用户交互,下载相应的项目模板
● 模板负责项目结构、工作流程、依赖项管理。因为一直单独建设项目模板,所以这里只考虑脚手架的交互与下载功能
流程图
一、流程

二、功能
1、脚手架
● 检测
○ ① 检测node版本
● 命令解析
○ 命令行参数传给commander解析
■ ② 处理非法命令:如果是非法命令,则显示建议的命令
○ 参数
■ web-cli:② 如果需要有参数,则输入web-cli显示帮助信息。如果没有参数,则输入web-cli后直接进入交互
■ web-cli -h:web-cli支持的命令
■ web-cli -l:列出支持的项目模板
● 文件操作:检查文件是否已存在,若存在则根据参数决定是否需要删除并给出提示,若不存在,则下载模板
● 模板操作
○ 模板下载
○ 下载后的模板重命名
○ 下载后删除原有git信息
2、项目模板相关功能(除了列出支持的项目模板,其他的功能不放在脚手架中)
○ 初始化项目模板
○ 添加项目模板
○ 列出支持的项目模板
○ 删除一个项目模板
实现
v1.0.0
20220427-实现的功能:检测node版本、命令行参数解析、文件操作、模板操作(模板下载)
交互式命令实现
一、通过inquirer.prompt()实现交互,这样用户能自由选择模板,而不是手动输入,手动输入一方面要记住模板,另一方面容易输入错误。

inquirer
  .prompt([
  {
    type: 'rawlist',
    name: 'template',
    choices,
    message: 'What template do you need?'
  }
])
.then(ans => {
  create(ans.template);
})

从git下载文件
一、主要是通过cross-spawn兼容不同平台,执行spawn命令,从git上下载模板
也可以通过download-git-repo来实现

spawn(
    "git",
    // ["clone", `http://gitlab.ichint.com/${downloadUrl}.git`],
    ["clone", `http://gitlab.ichint.com/${downloadUrl}.git`],
    { stdio: "inherit" }
);

Demo
demo地址:https://github.com/yquanmei/web-cli.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值