UNPKG

@pluve/create-web-cli

Version:

益丰项目脚手架

65 lines (63 loc) 2.03 kB
const ora = require("ora"); const inquirer = require("inquirer"); const chalk = require("chalk"); const exec = require("child_process").exec; const fs = require("fs"); const path = require("path"); // const request = require("request"); // const download = require("download-git-repo"); module.exports = () => { let stream = fs.createReadStream(path.resolve(__dirname, "../repos.json")); let data = ""; stream.on("data", function (chunk) { //将数据分为一块一块的传递 data += chunk; }); stream.on("end", function () { let dataJson = JSON.parse(data); if (dataJson.length > 0) { let tplNames = []; dataJson.forEach((repo) => { tplNames.push(repo.name); }); let promptList = [ { type: "list", message: "请选择模版", name: "tplName", choices: tplNames, }, { type: "input", message: "请输入项目名字", name: "projectName", validate(val) { if (val !== "") { return true; } return "项目名称不能为空"; }, }, ]; inquirer.prompt(promptList).then((answers) => { let ind = dataJson.find(function (ele) { return answers.tplName == ele.name; }); let cmdStr = `git clone ${ind.aliyun_git} ${answers.projectName} && cd ${answers.projectName}`; spinner = ora("\n 开始拉取项目,请等待..."); spinner.start(); exec(cmdStr, (err, stdout, stderr) => { spinner.stop(); if (err) { console.log("模版拉取失败……"); console.log(err); process.exit(); } console.log(chalk.green(`\n √ ${answers.projectName} 项目生成完毕!`)); console.log(`\n cd ${answers.projectName} && npm install \n`); process.exit(); }); }); } }); };