步骤
1. 安装依赖
pnpm i -D husky lint-staged commitlint @commitlint/cli @commitlint/config-conventional
2. 初始化命令
npx husky init
3. 配置
// commit-msg,现npx husky add 添加指令已被废弃,手动添加
npx --no-install commitlint --edit $1
// pre-commit 若前续指令未自动生成,手动添加
npx --no-install -- lint-staged
i. 根目录会生成 .hushy 文件夹
ii. .husky/pre-commit: 这是 husky 的 pre-commit 钩子文件,表示在每次 git commit 时,都会执行 npx --no-install -- lint-staged,运行 lint-staged 校验提交的代码。
iii. .husky/commit-msg: 这是 husky的 commit-msg 钩子文件,本项目配置用于校验 提交的 message消息是否符合项目的 commitlint 规范
// a. package.json "scripts": { ... "prepare": "husky install" //(其他人安装后会自动执行) ... } // b. 根目录会生成 .hushy 文件夹 echo "npx --no-install -- lint-staged" > .husky/pre-commit // c.package.json 配置指令 "scripts": { ... "elint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts", "slint": "stylelint \"src/**/*.(vue|scss|css)\"", "format": "prettier --write src/", "lint": "npm run elint && npm run slint && npm run format" ... }, "lint-staged": { "**/*.{js,jsx,tsx,ts,vue}": [ "npm run elint", "git add ." ], "**/*.{html,vue,ts,cjs,json,md}": [ "npm run format", "git add ." ], "**/*.{vue,css,scss,html}": [ "npm run slint", "git add ." ] }
4. 根目录新增commitlint.config.cjs。
本项目继承@commitlint/config-conventional的规则,具体的规范参考官方文档:commitlint。也可以自定义配置。
5. 可测试验证
a. 提交校验规范(需配合eslint prettier stylelint)
b. 提交信息规范
eg. git commit -m 'hhhh' // 终端出现如下报错: No staged files match any configured task. ⧗ input: hhhh ✖ subject may not be empty [subject-empty] ✖ type may not be empty [type-empty] ✖ found 2 problems, 0 warnings ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint husky - commit-msg script failed (code 1)