Skip to content

commitlint 生态

安装

bash
pnpm add husky @commitlint/cli @commitlint/config-conventional lint-staged cz-git -D

全局安装 czg 可以直接在终端进行 git cz 命令提交代码

bash
npm install czg -g

初始化 husky

bash
npx husky init

.husky/ 目录下创建 pre-commit commit 命令之前触发

sh
[ -n "$CI" ] && exit 0
npx lint-staged

.husky/ 目录下创建 commit-msg 提交 commit 命令时进行验证或处理

sh
npx --no-install commitlint --edit "$1"

配置

根目录下创建 commitlint.config.mjs 文件, 可以参考 cz-git 文档做配置

js
/** @type {import('cz-git').UserConfig} */
export default {
  ignores: [(commit) => commit.includes('init')],
  extends: ['@commitlint/config-conventional'],
  rules: {
    'body-leading-blank': [2, 'always'],
    'footer-leading-blank': [1, 'always'],
    'header-max-length': [2, 'always', 108],
    'subject-empty': [2, 'never'],
    'type-empty': [2, 'never'],
    'subject-case': [0],
    'type-enum': [2, 'always', ['feat', 'fix', 'perf', 'style', 'docs', 'test', 'build', 'ci', 'chore', 'revert', 'conflict', 'font', 'delete', 'stash']],
  },
}

根目录下创建 lint-staged.config.mjs 文件

js
/** @type {import('lint-staged').Config} */
export default {
  '*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
  '*.vue': ['eslint --fix', 'prettier --write', 'stylelint --fix'],
  '*.{scss,less,styl,css}': ['prettier --write', 'stylelint --fix'],
  '*.md': ['prettier --write'],
}