defaultSubject
适用于
defaultBody, defaultFooterPrefix, defaultIssues
- 初始化补全模板,可使用 Tab 或者 → 进行快速补全;亦可直接使用 Enter 输出模板。
适用于细分类别,提供前置模板信息,直接输出模板...- 例如 Element-Plus,这是一个 Vue3 组件库,其关于组件方面修改的 commit 非常严格
properties# https://element-plus.org/zh-CN/guide/commit-examples.html [type](scope): [messages] # e.g: feat(components): [button] I did something with button
# https://element-plus.org/zh-CN/guide/commit-examples.html [type](scope): [messages] # e.g: feat(components): [button] I did something with button
- 我们可以通过
git status
中的信息进行组件名的字符串匹配提取 - 再传递给 defaultSubject,如此一来可以快速进行补全,减少重复性输入以及拼写错误
js
// commitlint.config.js
const { execSync } = require('child_process')
const gitStatus = execSync('git status --porcelain || true')
.toString()
.trim()
.split('\n')
const subjectComplete = gitStatus
.find((r) => ~r.indexOf('M packages/components'))
?.replace(/\//g, '%%')
?.match(/packages%%components%%((\w|-)*)/)?.[1]
/** @type {import('cz-git').UserConfig} */
module.exports = {
prompt: {
defaultSubject: subjectComplete && `[${subjectComplete}] `,
},
};
// commitlint.config.js
const { execSync } = require('child_process')
const gitStatus = execSync('git status --porcelain || true')
.toString()
.trim()
.split('\n')
const subjectComplete = gitStatus
.find((r) => ~r.indexOf('M packages/components'))
?.replace(/\//g, '%%')
?.match(/packages%%components%%((\w|-)*)/)?.[1]
/** @type {import('cz-git').UserConfig} */
module.exports = {
prompt: {
defaultSubject: subjectComplete && `[${subjectComplete}] `,
},
};
利用可高度可定制的
cz-git
让 commit 更方便,更契合习惯,欢迎分享。