@zat-design/sisyphus-mobile-cli
Version:
移动端H5+小程序脚手架
88 lines (86 loc) • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _path = _interopRequireDefault(require("path"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _inquirer = _interopRequireDefault(require("inquirer"));
var _creator = _interopRequireDefault(require("./creator.js"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
/**
* 初始化
* @param {any} name // 创建的项目名
* @param {any} options // 配置项
*/
const create = async (name, options) => {
let projectName = !name ? await createProjectName() : name;
// 先判断是否重名,如果重名,若选择了force则直接覆盖之前的目录,否则报错
// 获取工作目录
const cwd = process.cwd();
// 目标目录也就是要创建的目录
const targetDir = _path.default.join(cwd, projectName);
if (_fsExtra.default.existsSync(targetDir)) {
// 选择了强制创建,先删除旧的目录,然后创建新的目录
if (options.force) {
await _fsExtra.default.remove(targetDir);
} else {
const {
action
} = await _inquirer.default.prompt([{
name: 'action',
type: 'list',
// 提示信息
message: `${projectName} is existed, do you want to overwrite this directory`,
// 选项
choices: [{
name: 'overwrite',
value: true
}, {
name: 'cancel',
value: false
}]
}]);
if (!action) {
return;
} else {
console.log('\r\noverwriting...');
await _fsExtra.default.remove(targetDir);
console.log('overwrite done');
}
}
}
// 创建项目
const creator = new _creator.default(projectName, targetDir);
creator.create();
};
/**
* 获取用户输入的项目名称
* @returns {string} projectName
*/
const createProjectName = async () => {
return new Promise((resolve, reject) => {
_inquirer.default.prompt([{
type: 'input',
name: 'name',
message: 'Project name',
validate: function (val) {
if (!/^[a-zA-Z]+$/.test(val)) {
return "模板名称只能含有英文";
}
// if (!/^[A-Z]/.test(val)) {
// return "模板名称首字母必须大写"
// }
return true;
}
}]).then(options => {
resolve(options.name);
});
});
};
var _default = create;
exports.default = _default;