UNPKG

create-bfe-cttq

Version:

CTTQ大前端脚手架项目

46 lines (44 loc) 1.32 kB
/** * 交互命令生成器,用于集成各模块的交互命令,生成最终的交互命令顺序。 */ 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); } } }