@pluve/create-web-cli
Version:
益丰项目脚手架
65 lines (63 loc) • 2.03 kB
JavaScript
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();
});
});
}
});
};