commitlint 生态
- commitlint 官方文档
- husky 官方文档
- cz-git 官方文档
- lint-staged 用于提交校验
安装
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'],
}