@mpsc/cli
Version:
73 lines (65 loc) • 2.06 kB
JavaScript
const { isMpProject, getProjectPackageManage } = require('../tools/getProjectJson');
const _log = require('../utils/logger');
const cwd = process.cwd();
const { writeFileTree, isExitDir, root } = require('../utils/file');
const inquirer = require('inquirer');
const { loadModule } = require('../lib/module');
const { isFunction } = require('../utils/type');
const cliLbgPath = `${root}/node_modules/@mpsc/cli-lbg`;
const isDebug = globalThis['initDebug'] || false;
const render = async (generator, ejsOptions) => {
const templateFiles = await generator.render('/template', ejsOptions, isDebug);
writeFileTree(cwd, templateFiles);
_log.done('.mps目录创建成功', 'writeFileTree');
};
module.exports = async (generator, { force = false, lbg = false }) => {
const isMp = isMpProject(force, isDebug);
if (!force && !isMp) {
_log.error(
'当前目录' + _log.chalk.yellow(cwd) + '不是小程序根项目,请在小程序根目录中执行mps init',
'Init',
);
process.exit(1);
}
if (isExitDir('.mps', isDebug)) {
const { ok } = await inquirer.prompt([
{
name: 'ok',
type: 'confirm',
message: _log.chalk.red(
`已存在.mps目录,是否仍要继续?继续执行将覆盖.mps目录下所有同名文件`,
),
},
]);
if (!ok) {
process.exit(1);
}
}
// 获取lbg 通知模板
let lbgNoticeTaskTemp = '';
if (lbg) {
try {
const { lbg: lbgModule } = await loadModule('@mpsc/cli-lbg', root);
isFunction(lbgModule.getLbgNoticeTaskTemp) &&
(lbgNoticeTaskTemp = lbgModule.getLbgNoticeTaskTemp(cliLbgPath));
} catch (err) {
if (isDebug) {
console.log('');
_log.error(err, 'init');
console.log('');
_log.error('.mps目录创建失败', 'getLbgNoticeTaskTemp');
}
return;
}
}
// 获取包管理工具
const packageManage = getProjectPackageManage();
render(
generator,
{
packageManage,
lbgNoticeTaskTemp,
},
isDebug,
);
};