create-bfe-cttq
Version:
CTTQ大前端脚手架项目
68 lines (62 loc) • 2.86 kB
JavaScript
/**
* 集成git提交规范的入口
*/
const fs = require("fs");
const path = require("path");
const { logWithSpinner, succeedSpinner, failSpinner } = require("./util/spinner");
const TemplateManager = require("./TemplateManager");
const renderTemplate = require("./util/renderTemplate");
const mergePackage = require("./util/mergePackage");
const { hasProjectNpm, hasProjectPnpm, hasProjectYarn, tryRun } = require("./util/shared")
const injectInfo = require("./util/injectInfo")
async function integrateGit() {
try {
logWithSpinner("开始集成Git Commit规范...")
let context = process.cwd();
let templateManager = new TemplateManager(context, process.env.CTTQ_TEMPLATE_VERSION);
logWithSpinner("下载模版库中...");
await templateManager.download().catch(() => {
failSpinner("模版库下载失败, 无法连接Gitlab");
templateManager.delete();
throw new Error("Git Commit规范集成失败");
});;
let gitpath = templateManager.pathAt("git");
logWithSpinner("集成Git Commit配置...");
// 渲染文件
renderTemplate(gitpath, context, ["package.json"])
// 合并pkg
let pkgpath = path.resolve(context, "package.json");
let pkg = JSON.parse(fs.readFileSync(pkgpath, "utf-8") || "{}");
let gitPkg = JSON.parse(fs.readFileSync(path.resolve(gitpath, "package.json"), "utf-8") || "{}");
let conflictDepSources = {};
mergePackage("Git", pkg, gitPkg, conflictDepSources);
fs.writeFileSync(pkgpath, JSON.stringify(pkg, null, 2) + "\n");
templateManager.delete();
injectInfo(context, "git");
// 自动更新项目
if (hasProjectPnpm(context)) {
logWithSpinner("运行 pnpm install 更新项目...");
await tryRun("pnpm install").catch(() => {
failSpinner("pnpm install 更新项目失败,需要自己手动更新");
});
} else if (hasProjectYarn(context)) {
logWithSpinner("运行 yarn install 更新项目...");
await tryRun("yarn install").catch(() => {
failSpinner("yarn install 更新项目失败,需要自己手动更新");
});
} else if (hasProjectNpm(context) || fs.existsSync(path.resolve(context, "node_modules"))) {
logWithSpinner("运行 npm install 更新项目...");
await tryRun("npm install").catch(() => {
failSpinner("npm install 更新项目失败,需要自己手动更新");
});
}
succeedSpinner("Git Commit规范集成成功");
} catch (error) {
failSpinner("Git Commit规范集成失败");
}
}
module.exports = (...args) => {
return integrateGit().catch((error) => {
process.exit(1);
});
}