Skip to content
On this page

defaultSubject

适用于 defaultBody, defaultFooterPrefix, defaultIssues

  • 初始化补全模板,可使用 Tab 或者 进行快速补全;亦可直接使用 Enter 输出模板。
    适用于细分类别,提供前置模板信息,直接输出模板...
    • 例如 Element-Plus,这是一个 Vue3 组件库,其关于组件方面修改的 commit 非常严格
    sh
    # 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}] `,
  },
};

demo-gif




利用可高度可定制的 cz-git 让 commit 更方便,更契合习惯,欢迎分享。

我只是尽力将工具做得更好,如果可以的话欢迎给一个star ⭐