croot-cli
Version:
根网大数据平台前端脚手架
49 lines (46 loc) • 1.63 kB
JavaScript
const ora = require("ora");
const fs = require("fs");
const downloadTemplate = require("download-git-repo");
const chalk = require("chalk");
const handlebars = require("handlebars");
const inquirer = require("inquirer");
const { templateList, requestUrl, packageInfo } = require("./config");
class Generator {
constructor(name, targetDir, template) {
// 目录名称
this.name = name;
// 创建位置
this.targetDir = targetDir;
// 选择模板
this.template = template;
}
create() {
this.download();
}
// 下载远程模板
download() {
const templateUrl = `${requestUrl}/${templateList[this.template]}.git`;
const spinner = ora("请稍候,下载项目模板中...");
spinner.start();
downloadTemplate(templateUrl, this.targetDir, { clone: true }, (err) => {
if (err) {
spinner.fail("模板下载失败,请重试...");
} else {
spinner.succeed(" ");
inquirer.prompt(packageInfo).then((answers) => {
const packagePath = `${this.targetDir}/package.json`;
const packageContent = fs.readFileSync(packagePath, "utf8");
const packageResult = handlebars.compile(packageContent)(answers);
fs.writeFileSync(packagePath, packageResult);
console.log(
`\r\nSuccessfully created project ${chalk.cyan(this.name)}`
);
console.log(`\r\n cd ${chalk.cyan(this.name)}`);
console.log(" npm install\r\n");
console.log(" npm run dev\r\n");
});
}
});
}
}
module.exports = Generator;