UNPKG

croot-cli

Version:

根网大数据平台前端脚手架

49 lines (46 loc) 1.63 kB
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;