@zat-design/sisyphus-mobile-cli
Version:
移动端H5+小程序脚手架
175 lines (172 loc) • 4.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inquirerPrompt = inquirerPrompt;
exports.install = install;
exports.isOverride = void 0;
var _inquirer = _interopRequireDefault(require("inquirer"));
var _child_process = require("child_process");
var _path = _interopRequireDefault(require("path"));
var _ora = _interopRequireDefault(require("ora"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function ownKeys(e, r) {
var t = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
r && (o = o.filter(function (r) {
return Object.getOwnPropertyDescriptor(e, r).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread(e) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
_defineProperty(e, r, t[r]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
});
}
return e;
}
function _defineProperty(obj, key, value) {
key = _toPropertyKey(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _toPropertyKey(arg) {
var key = _toPrimitive(arg, "string");
return typeof key === "symbol" ? key : String(key);
}
function _toPrimitive(input, hint) {
if (typeof input !== "object" || input === null) return input;
var prim = input[Symbol.toPrimitive];
if (prim !== undefined) {
var res = prim.call(input, hint || "default");
if (typeof res !== "object") return res;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return (hint === "string" ? String : Number)(input);
}
const isOverride = async (name, targetDir) => {
return new Promise((resolve, reject) => {
_inquirer.default.prompt([{
name: "action",
type: "list",
// 提示信息
message: `${name} is existed, do you want to overwrite this directory`,
// 选项
choices: [{
name: "overwrite",
value: true
}, {
name: "cancel",
value: false
}]
}]).then(options => {
const {
action
} = options;
resolve(action);
});
});
};
// 交互式询问列表
exports.isOverride = isOverride;
function inquirerPrompt(argv) {
const {
name
} = argv;
return new Promise((resolve, reject) => {
_inquirer.default.prompt([{
type: "input",
name: "name",
message: "Project name",
default: name,
validate: function (val) {
if (!/^[a-zA-Z]+$/.test(val)) {
return "模板名称只能含有英文";
}
if (!/^[A-Z]/.test(val)) {
return "模板名称首字母必须大写";
}
return true;
}
}, {
type: "list",
name: "type",
message: "Choose Template type",
choices: ["zatVue3H5Template", "zatMiniTemplate"],
filter: function (value) {
return {
form: "form",
zatMiniTemplate: "zatMiniTemplate",
zatVue3H5Template: "zatVue3H5Template"
}[value];
}
}, {
type: "list",
message: "Choose Frame type",
choices: ["vue"],
name: "frame"
}]).then(answers => {
const {
frame
} = answers;
if (frame === "vue") {
_inquirer.default.prompt([
// 这里可以区分UI组件
// {
// type: "list",
// message: "Choose UI Library",
// choices: [""],
// name: "library",
// },
]).then(answers2 => {
resolve(_objectSpread(_objectSpread({}, answers), answers2));
}).catch(error => {
reject(error);
});
}
}).catch(error => {
reject(error);
});
});
}
// 自动安装依赖
function install(cmdPath, options) {
const {
frame
} = options;
const command = `pnpm add ${frame} `;
return new Promise(function (resolve, reject) {
const spinner = (0, _ora.default)();
spinner.start(`正在安装依赖,请稍等`);
(0, _child_process.exec)(command, {
cwd: _path.default.resolve(cmdPath)
}, function (error) {
if (error) {
reject();
spinner.fail(`依赖安装失败`);
return;
}
spinner.succeed(`依赖安装成功`);
resolve();
});
});
}