@ywfe/cli
Version:
遥望前端开发命令行工具
97 lines (96 loc) • 4.44 kB
JavaScript
;
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;