
Simple git hook
6 分钟阅读
-- 阅读
-- 评论
前言: 为了同组内规范化
git的提交记录,并且可以自定义一些commit内容,约束提交规范,以及自动生成一些 change log prefix;
Packages
npm install cz-git commitizen simple-git-hooks @commitlint/cli @commitlint/config-conventionalIntroduce
@commitlint/cli, @commitlint/config-conventional
为了提供一些commit-msg的规范,以及prompt,约束git提交的信息,比如约束提交前缀:
[ 'build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test' ];
cz-git
提供可视化的操作git提交的方式;
simple-git-hooks
比 husky 更加轻量级,简单的git hook管理包;
关于git hook的介绍请看官方文档 -> Git
Start
下载依赖并且写入配置:
npm install cz-git commitizen simple-git-hooks @commitlint/cli @commitlint/config-conventional; npm pkg set scripts.prepare="npx simple-git-hooks" npx simple-git-hooks npm pkg set scripts.commitlint="commitlint --edit" npm pkg set scripts.cz="git add . && git-cz"
其他配置:
{ // package.json "scripts": { "commitlint": "commitlint --edit", "cz": "git add . && git-cz", "prepare": "npx simple-git-hooks" }, "simple-git-hooks": { "pre-commit": "<pre-commit hook:做一些需要在commit前的操作,比如结合 biome/eslint 检查代码>", "commit-msg": "npx --no-install commitlint --edit ${1}", "preserveUnused": ["commit-msg"] }, "config": { "commitizen": { // 指定cz-git为使用的适配器 "path": "node_modules/cz-git" } } }
然后复制至commitlint.config.js:
/** @type {import('cz-git').UserConfig} */ module.exports = { extends: ["@commitlint/config-conventional"], prompt: { alias: { f: "docs: fix typos", r: "docs: update README", s: "style: update code format", b: "build: bump dependencies", c: "chore: update config", }, messages: { type: "选择你要提交的类型 :", scope: "选择一个提交范围(可选):", customScope: "请输入自定义的提交范围 :", subject: "填写简短精炼的变更描述 :\n", body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n', breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n', footerPrefixesSelect: "选择关联issue前缀(可选):", customFooterPrefix: "输入自定义issue前缀 :", footer: "列举关联issue (可选) 例如: #31, #I3244 :\n", confirmCommit: "是否提交或修改commit ?", }, types: [ { value: "feat", name: "feat: ✨ 新增功能 | A new feature", emoji: "✨", }, { value: "fix", name: "fix: 🐞 修复缺陷 | A bug fix", emoji: "🐞" }, { value: "docs", name: "docs: 📝 文档更新 | Documentation only changes", emoji: "📝", }, { value: "style", name: "style: 💄 代码格式 | Changes that do not affect the meaning of the code", emoji: "💄", }, { value: "refactor", name: "refactor: ♻️ 代码重构 | A code change that neither fixes a bug nor adds a feature", emoji: "♻️", }, { value: "perf", name: "perf: ⚡️ 性能提升 | A code change that improves performance", emoji: "⚡️", }, { value: "test", name: "test: ✅ 测试相关 | Adding missing tests or correcting existing tests", emoji: "✅", }, { value: "build", name: "build: 📦️构建相关 | Changes that affect the build system or external dependencies", emoji: "📦️", }, { value: "ci", name: "ci: 🎡 持续集成 | Changes to our CI configuration files and scripts", emoji: "🎡", }, { value: "revert", name: "revert: 🔨 回退代码 | Revert to a commit", emoji: "🔨", }, { value: "chore", name: "chore: ⏪️ 其他修改 | Other changes that do not modify src or test files", emoji: "⏪️", }, ], useEmoji: true, emojiAlign: "center", useAI: false, aiNumber: 1, themeColorCode: "", scopes: [], allowCustomScopes: true, allowEmptyScopes: true, customScopesAlign: "bottom", customScopesAlias: "custom", emptyScopesAlias: "empty", upperCaseSubject: false, markBreakingChangeMode: false, allowBreakingChanges: ["feat", "fix"], breaklineNumber: 100, breaklineChar: "|", skipQuestions: [], issuePrefixes: [ { value: "closed", name: "closed: ISSUES has been processed" }, ], customIssuePrefixAlign: "top", emptyIssuePrefixAlias: "skip", customIssuePrefixAlias: "custom", allowCustomIssuePrefix: true, allowEmptyIssuePrefix: true, confirmColorize: true, scopeOverrides: undefined, defaultBody: "", defaultIssues: "", defaultScope: "", defaultSubject: "", }, };
检查git hooks path:
git config core.hooksPath如果hooks path不在 .git/hooks下,请依次执行如下命令:
git config core.hooksPath .git/hooks/ npx simple-git-hooks
评论 (0)
使用 GitHub 登录后发表评论
Loading...