UNPKG

benefit-cli

Version:

快速生成模块

71 lines (67 loc) 1.99 kB
const ora = require('ora') const inquirer = require('inquirer') const chalk = require('chalk') const request = require('request') const download = require('download-git-repo') module.exports = () => { request({ url: 'https://api.github.com/users/benefit-cli/repos', headers: { 'User-Agent': 'benefit-cli' } }, (err, res, body) =>{ if (err) { console.log(chalk.red('查询模版列表失败')) console.log(chalk.red(err)) process.exit(); } const requestBody = JSON.parse(body) if (Array.isArray(requestBody)) { let tplNames = []; requestBody.forEach(repo => { tplNames.push(repo.name); }) let promptList = [ { type: 'list', message: '请选择模版', name: 'tplName', choices: tplNames }, { type: 'input', message: '请输入模块名字', name: 'moduleName', validate (val) { if (val !== '') { return true } return '模块名称不能为空' } } ] inquirer.prompt(promptList).then(answers => { let ind = requestBody.find(function (ele) { return answers.tplName == ele.name; }); let gitUrl = `${ind.full_name}#${ind.default_branch}`, defaultUrl = './', projectUrl = `${defaultUrl}/${answers.moduleName}`, spinner = ora('\n 开始生成模块,请等待...'); spinner.start(); download(gitUrl, projectUrl, (error)=>{ spinner.stop(); if (error) { console.log('模块下载失败……') console.log(error) process.exit() } console.log(chalk.green(`\n √ ${answers.moduleName} 模块生成完毕!`)) console.log(`\n cd ${answers.moduleName} && npm install \n`) }) }) } else { console.error(requestBody.message) } }) }