create-bfe-cttq
Version:
CTTQ大前端脚手架项目
46 lines (44 loc) • 1.32 kB
JavaScript
/**
* 交互命令生成器,用于集成各模块的交互命令,生成最终的交互命令顺序。
*/
const prompts = require("prompts");
const { red, green, bold } = require("kolorist")
const PromptorAPI = require("./PromptorAPI");
const { loadPlugins } = require("./util/plugins")
const ModuleName = "prompts";
module.exports = class Promptor {
/**
* 构造器
* @param {*} plugins 所有插件
*/
constructor(plugins) {
this.plugins = plugins;
this.questions = [];
this.completes = [];
this.answers = {};
this.preset = {};
this.pluginModules = loadPlugins(plugins, ModuleName)
}
/**
* 显示交互命令
*/
async show() {
for (const module of this.pluginModules) {
let promptorAPI = new PromptorAPI(module.moduleName, this);
module(promptorAPI);
}
prompts.override(this.preset);
Object.assign(this.answers, this.preset);
this.answers = await prompts(
this.questions,
{
onCancel: () => {
throw new Error(red("✖") + " 取消创建项目");
},
},
);
for (const complete of this.completes) {
complete(this.answers);
}
}
}