cz-git
全局安装
commitizen可以快速使用cz或git cz命令来启动
快速开始
- 安装(没有全局安装
commitizen,需要在下方一起安装)
bash
npm i -D cz-gitbash
yarn add -D cz-gitbash
pnpm add -D cz-gitbash
bun add -D cz-git- 修改
package.json中配置路径指向cz-git
json
{
"scripts": {
"commit": "git-cz"
},
"config": {
"commitizen": {
"path": "node_modules/cz-git"
}
}
}搭配commitlint
- 安装commitlint
bash
bun add -D @commitlint/config-conventional @commitlint/cli commitlint在 package.json 添加 commitlint 配置
json
{
"config": {
"commitizen": {
"path": "node_modules/cz-git",
"useEmoji": true
}
}
}配置文件
直接当模板使用
如果你的项目type是module,则需要使用commitlint.config.cjs文件
js
const { defineConfig } = require('cz-git')
module.exports = defineConfig({
rules: {
// @see: https://commitlint.js.org/#/reference-rules
},
prompt: {
alias: { fd: 'docs: fix typos' },
messages: {
type: "Select the type of change that you're committing:",
scope: 'Denote the SCOPE of this change (optional):',
customScope: 'Denote the SCOPE of this change:',
subject: 'Write a SHORT, IMPERATIVE tense description of the change:\n',
body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
breaking:
'List any BREAKING CHANGES (optional). Use "|" to break new line:\n',
footerPrefixesSelect:
'Select the ISSUES type of changeList by this change (optional):',
customFooterPrefix: 'Input ISSUES prefix:',
footer: 'List any ISSUES by this change. E.g.: #31, #34:\n',
generatingByAI: 'Generating your AI commit subject...',
generatedSelectByAI: 'Select suitable subject by AI generated:',
confirmCommit: 'Are you sure you want to proceed with the commit above?',
},
types: [
{
value: 'feat',
name: 'feat: ✨ A new feature',
emoji: ':sparkles:',
},
{ value: 'fix', name: 'fix: 🐛 A bug fix', emoji: ':bug:' },
{
value: 'docs',
name: 'docs: 📝 Documentation only changes',
emoji: ':memo:',
},
{
value: 'style',
name: 'style: 💄 Changes that do not affect the meaning of the code',
emoji: ':lipstick:',
},
{
value: 'refactor',
name: 'refactor: ♻️ A code change that neither fixes a bug nor adds a feature',
emoji: ':recycle:',
},
{
value: 'perf',
name: 'perf: ⚡️ A code change that improves performance',
emoji: ':zap:',
},
{
value: 'test',
name: 'test: ✅ Adding missing tests or correcting existing tests',
emoji: ':white_check_mark:',
},
{
value: 'build',
name: 'build: 📦️ Changes that affect the build system or external dependencies',
emoji: ':package:',
},
{
value: 'ci',
name: 'ci: 🎡 Changes to our CI configuration files and scripts',
emoji: ':ferris_wheel:',
},
{
value: 'chore',
name: "chore: 🔨 Other changes that don't modify src or test files",
emoji: ':hammer:',
},
{
value: 'revert',
name: 'revert: ⏪️ Reverts a previous commit',
emoji: ':rewind:',
},
],
useEmoji: true,
emojiAlign: 'center',
useAI: false,
aiNumber: 1,
themeColorCode: '',
scopes: [],
allowCustomScopes: true,
allowEmptyScopes: true,
customScopesAlign: 'bottom',
customScopesAlias: 'custom',
emptyScopesAlias: 'empty',
upperCaseSubject: null,
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: '',
},
})commitizen
它是用来生成符合规范的提交信息的