40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
import color from "picocolors";
|
|
import { projectTypes, frameworks } from "./config.js";
|
|
import { gridSelect, createComponentUI, formatResults, waitKey, showPlaceholder } from "./ui.js";
|
|
|
|
export async function run() {
|
|
while (true) {
|
|
// 二级菜单 - 项目类型
|
|
const typeResult = await gridSelect(projectTypes, "项目脚手架 - 选择类型");
|
|
if (typeResult.action === "back") return "back";
|
|
|
|
const projectType = typeResult.item.name;
|
|
const frameworkList = frameworks[projectType];
|
|
|
|
while (true) {
|
|
// 三级菜单 - 框架选择
|
|
const frameworkResult = await gridSelect(frameworkList, `${projectType}项目 - 选择框架`);
|
|
if (frameworkResult.action === "back") break;
|
|
|
|
const framework = frameworkResult.item;
|
|
|
|
if (projectType === "前端" || projectType === "全栈") {
|
|
// 组件配置
|
|
const ui = createComponentUI(framework.name);
|
|
const result = await ui.runInteractive();
|
|
|
|
if (result) {
|
|
const summary = formatResults(result.results);
|
|
ui.showSummary(summary);
|
|
console.log(color.yellow("功能开发中,敬请期待..."));
|
|
await waitKey();
|
|
}
|
|
} else {
|
|
// 后端暂无组件配置
|
|
showPlaceholder(framework);
|
|
await waitKey();
|
|
}
|
|
}
|
|
}
|
|
}
|