UNPKG

datamax-cli

Version:

datamax plugin cli

124 lines (119 loc) 3.43 kB
const inquirer = require("inquirer"); const fs = require("fs-extra"); const shelljs = require("shelljs"); shelljs.config.verbose = true; shelljs.config.silent = true; const chalk = require("chalk"); var path = require("path"); module.exports = function (config, args) { function showQuestions(examples) { const isCN = require("../build/util/util")["isCN"]; var questions = [ { type: "input", name: "pluginName", message: "你要创建的组件名(英文)", validate: function (value) { if (isCN(value)) { return "不能为中文,重新输入"; } if (!value) { return "不允许为空"; } if (/_/.test(value)) { return "不允许存在下划线"; } if (fs.existsSync(value)) { return "该组件目录已存在"; } return true; }, }, { type: "input", name: "menuName", message: "你要创建的组件在datamax菜单显示名是:", validate: function (value) { if (!value) { return "不允许为空"; } return true; }, }, { type: "input", name: "description", message: "你的组件描述是:", validate: function (value) { return true; }, default: "no desc", }, { type: "input", name: "author", message: "插件创作者名称是(英文):", validate: function (value) { if (isCN(value)) { return "不能为中文,重新输入"; } return true; }, default: "no name", }, { type: "input", name: "author", message: "插件创作者名称是(英文):", validate: function (value) { if (isCN(value)) { return "不能为中文,重新输入"; } return true; }, default: "no name", }, { type: "when", name: "autoOpen", message: "自动打开插件编辑器?:", validate: function (value) { return Boolean(value) }, default: true, }, ]; return inquirer.prompt(questions).then(function (answers) { console.log(answers); const buildFile = require("../build/index"); new Promise((resolve) => { console.log(chalk.green("[1] 开始生成插件")); buildFile(answers, resolve); }) .then(() => { console.log(chalk.green(" 生成插件成功")); }) .then(() => { console.log(chalk.green("[2] 开始安装插件依赖")); if (fs.existsSync(answers.pluginName)) { const root = process.cwd(); process.chdir(path.join(root, `./${answers.pluginName}`)); shelljs.exec("npm install"); } }) .then(() => { console.log(chalk.green("安装插件依赖成功")); console.log( chalk.blueBright(`cd ${answers.pluginName};npm run serve`) ); return process.exit(); }) .catch((error) => { console.log(chalk.red(" 生成插件失败")); console.log(chalk.red(error)); return process.exit(); }); }); } Promise.resolve().then(showQuestions); };