手把手教你优雅的生成前端脚手架(二):脚手架增强功能-文件拉取【附源码地址】

话不多说!!!

交互命令-使用commander

代码如下

#! /usr/bin/env node

const program = require('commander');
program
    .version(require('../package').version) // --version 版本
    .command('init <templateName> <projectName>') // 初始化命令
    .description('初始化项目文件')
    .action((templateName, projectName) => {// 得到name 
        console.error('hellow world')
    });
program.parse(process.argv); //解析变量

控制台执qiji-cli, 会打印出 hellow world

文件拉取-使用download-git-repo

#! /usr/bin/env node

const program = require('commander');
const download = require('download-git-repo');
//version 版本号
//name 新项目名称
program
    .version(require('../package').version) // --version 版本
    .command('init <templateName> <projectName>') // 初始化命令
    .description('初始化项目文件')
    .action((templateName, projectName) => {// 得到新建项目模版类型和name 
        if (templateName === "vue") {
            console.log('clone template ...');
            download('direct:http://gitlab.com/qiji/qiji_creator', projectName,  { clone: true },function (err) { //默认拉去的是maser分支
                console.log(err ? err : 'Success')
            })
        } else if(templateName === "react") {
            console.log('clone template ...');
            download('gitlab.com:qiji/qiji_creator#test', projectName,  { clone: true },function (err) { //拉取的是test分支
                console.log(err ? err : 'Success')// 进行输出
            })
        } else {
          console.error('A template name that does not exist')
        }
    });
program.parse(process.argv); //解析变量

从代码中可以看出,有vuereact两种功能项目
执行命令:

qiji-cli init vue test-master // vue是拉取的项目类型;test-master是拉去新建的项目名称
qiji-cli init react test-react  // react是拉取的项目类型;test-react是拉去新建的项目名称

注意大坑:
‘git clone’ failed with status 128 通过git clone拉取出错,一般是download时配置的文件路径有问题
将git改为通过 direct: http:// URl的方式进行clone

一个用户与命令行交互的工具- inquirer.

作用:使用这个命令主要是希望可以想antPro一样支持选择下载多种type
在这里插入图片描述

const download = require('download-git-repo');
const inquirer = require('inquirer');

const promptList = [{
  type: 'list',
  message: 'Select the template type:',
  name: 'template',
  choices: [
    "Vue",
    "React",
  ],
  filter: function (val) { // 使用filter将回答变为小写
    return val.toLowerCase();
  }
}];

module.exports = (projectName) => {
  const detailDownloadFunc = (url, projectName, spinner) => {
    download(url, projectName, { clone: true }, function (err) { 
       console.log(err ? err : "Loading template success")
      process.exit();
    })
  }
  inquirer.prompt(promptList).then(answers => {
    const tplName = answers.template;
    // 分步接收用户输入的参数
    if (tplName == "vue" || tplName == 'react') {
      const text = 'Loading ' + tplName + ' template';
      if (tplName === "vue") {
        detailDownloadFunc('direct:http://gitlab.com/qiji/qiji_wap', projectName, spinner)
      } else if (tplName === "react") {
        detailDownloadFunc('gitlab.com:qiji/qiji_creator#test', projectName, spinner)
      }
    } else {
      console.error('A template name that does not exist')
      process.exit();
    }
  })
}

终端loading效果-org

const ora = require('ora');
  const text = 'Loading ' + tplName + ' template';
  const spinner = ora(text).start();
  spinner.color = 'yellow';
  spinner.text = text;
  spinner.succeed("Loading template success")
	spinner.stop()

终端字符串美化库: chalk

const chalk = require('chalk');
const error = chalk.bold.red;
const warning = chalk.keyword('orange');
console.log(error('Error!'));
console.log(warning('Warning!'));

相关文章:

课程基础概述本门课程,大喵将会打着大家从零打造一款属于大家自己的 CLI命令行脚手架工具,本课程主要面向新手同学,对命令行工具开发,前端工具开发感兴趣的同学,可以通过本门课程学习到如何使用Node.JS开发一款适配自身项目特色的脚手架命令行工具。并且也会带着大家推送自己开发完成的CLI工具到NPM线上仓库,供所有人下载安装使用。整个课程,大喵会详细讲解所需要依赖的第三方模块包的具体使用,让同学们可以举一反三开发具备自身特色的CLI工具,最终大喵会运用到前面所讲解的基础内容,独立自主开发一个具备 damiao [ add | delete | list | init ] 四种子命令的CLI脚手架工具。CLI命令行工具命令行工具(Cmmand Line Interface)简称cli,顾名思义就是在命令行终端中使用的工具。我们常用的 git 、npm、vim 等都是 cli 工具,比如我们可以通过 git clone 等命令简单把远程代码复制到本地。在目前前端工程大流行的环境下,vue-cli、create-reate-app、angular-cli 等等方便快捷的命令行脚手架工具诞生,极大的提升了我们的开发效率与质量,我们可以通过这些脚手架工具在本地快速构建我们的开发项目。 课程目录结构1、CLI课程介绍   2、CLI课程纲领和讲师介绍3、CLI课程内容概述    4、CLI命令行工具及场景应用5、CLI课程准备工具和技术   6、CLI课程收获和收益  7、CLI课程实战案例介绍   8、npm CLI 命令行工具发展现状9、创建第一个命令行自定义命令   10、process.argv 接收命令行参数11、commander 工具使用介绍一   12、commander 工具使用介绍13、inquirer 工具使用介绍   14、ora 加载工具使用介绍15、chalk 颜色工具使用介绍   16、download-git-repo 仓库工具介绍17、创建脚手架命令   18、创建命令可执行文件19、damiao add 命令行指令开发   20、damiao add 模板录入校验21、damiao delete 命令行指令开发   22、damiao list 命令行指令开发23、damiao init 初始化项目指令开发   24、damiao init 指令参数输入校验25、damiao 命令行指令测试.mp4  26、创建npm个人账号及发布npm仓库27、全局安装脚手架工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值