create-table-super
Version:
table-super构建器
85 lines (73 loc) • 2.22 kB
JavaScript
;
const inquirer = require("inquirer");
const exec = require("child_process").exec;
const ProgressBar = require("progress");
exports.create = function () {
inquirer.prompt([{
type: "list",
message: "请选择您要使用的模块",
name: "module",
choices: ["一体包", "单组件"]
}, // {
// type: "list",
// message: "项目使用的脚手架",
// name: "frame",
// choices: ["umi", "其它"],
// },
{
type: "list",
message: "选择安装方式",
name: "install",
choices: ["yarn", "npm"]
}, {
type: "confirm",
message: "确认已选内容请输入y/Y开始下载",
name: "confirm"
}]).then(answer => {
// 不执行下载命令
if (!answer.confirm) return;
let moduleCode = answer.module === "一体包" ? "react-table-operate umi-plugin-super" : "react-table-super"; // let pluginCode = answer.frame === "umi" ? "umi-plugin-super" : "";
let installCode = answer.install === "yarn" ? "yarn add" : "npm install";
const npmText = installCode + " " + moduleCode; // 在当前目录下的scripts文件夹里执行hexo g命令
console.log("\x1B[32m%s\x1b[0m", "正在下载中--->");
const bar = new ProgressBar("downloading [:bar] :percent :etas", {
total: 30
});
createProgressBar(bar);
exec(npmText, {
cwd: process.cwd()
}, (err, stdout, stderr) => {
if (err) {
console.log(err);
return;
}
bar.tick(30);
console.log(`${stdout}`);
console.error("\x1B[32m%s\x1b[0m", "success 组件包安装完成");
if (answer.module === "一体包") {
init(answer.install);
}
});
});
};
function init(install) {
console.error("\x1B[32m%s\x1b[0m", "开始执行初始化命令--->");
exec(`${install} run super init`, {
cwd: process.cwd()
}, (err, stdout, stderr) => {
if (err) {
console.log(err);
return;
}
console.log(`${stdout}`);
console.error("\x1B[32m%s\x1b[0m", "欢迎使用super");
});
}
function createProgressBar(bar) {
const timer = setInterval(() => {
bar.tick();
if (bar.curr === 29 || bar.complete) {
clearInterval(timer);
}
}, 200);
}