UNPKG

@ywfe/cli

Version:

遥望前端开发命令行工具

97 lines (96 loc) 4.44 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.create = void 0; const chalk_1 = __importDefault(require("chalk")); const inquirer_1 = __importDefault(require("inquirer")); const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); const rimraf_1 = __importDefault(require("rimraf")); const common_1 = require("../util/common"); const config_1 = require("../util/config"); const func_1 = require("../module/create/func"); const generate_1 = require("../module/create/generate"); const create = (porjectName, options) => __awaiter(void 0, void 0, void 0, function* () { const initConfig = (0, config_1.getYWFEConfig)('init'); if (!initConfig) { (0, common_1.logger)(chalk_1.default.red('✖️ 未找到模板配置。请检查配置文件')); return; } const run = (projectName, projectPath) => __awaiter(void 0, void 0, void 0, function* () { const { ok } = yield inquirer_1.default.prompt([ { name: 'ok', message: `确定在当前目录下创建项目 ${chalk_1.default.green(projectName)}?`, type: 'confirm', default: true, } ]); if (!ok) { (0, common_1.logger)(chalk_1.default.green('退出项目创建')); return; } const tempList = []; Object.keys(initConfig.templateList).forEach((key) => { tempList.push(key); }); const templateSelected = yield inquirer_1.default.prompt([{ type: 'list', name: 'templateName', message: '请选择项目模板', choices: tempList || [], }]); const { templateName } = templateSelected; const templateDownloadUrl = initConfig.templateList[templateName].git; yield (0, func_1.downloadTemplate)(templateDownloadUrl, templateName, (temCachePath) => { (0, generate_1.generate)(projectName, temCachePath, projectPath, (err) => __awaiter(void 0, void 0, void 0, function* () { if (err) { (0, common_1.logger)(chalk_1.default.red('✖️ 项目创建失败。')); (0, common_1.logger)(`\r\n失败原因:${err.message.trim()}`); return; } (0, common_1.logger)(chalk_1.default.green('✔️ 项目创建成功。')); yield (0, func_1.installPkg)(projectPath); })); }); }); if (porjectName) { const projectName = porjectName; const projectPath = path_1.default.join(process.cwd(), projectName); if (fs_extra_1.default.existsSync(projectPath)) { inquirer_1.default.prompt([{ type: 'confirm', message: '项目目录已存在. 是否覆盖?', name: 'ok', default: false, }]).then((answers) => __awaiter(void 0, void 0, void 0, function* () { if (answers.ok) { rimraf_1.default.sync(projectPath); run(projectName, projectPath); } else { (0, common_1.logger)(chalk_1.default.green('退出项目创建')); return; } })); } else { run(projectName, projectPath); } } else { (0, common_1.logger)(chalk_1.default.red('✖️ 请输入项目名称。')); } }); exports.create = create;