UNPKG

create-bfe-cttq

Version:

CTTQ大前端脚手架项目

68 lines (62 loc) 2.86 kB
/** * 集成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); }); }