Husky 和 Commitlint 是前端项目中常用的工具,用于约定和规范代码提交,确保代码提交信息符合团队的约定规范。以下是详细介绍及配置步骤。
Husky 与 Commitlint 的作用
-
Husky:
- 用于在 Git 钩子(如
commit-msg、pre-commit、pre-push等)上运行自定义脚本。 - 主要用于触发代码质量检查、单元测试、提交规范检查等任务。
- 用于在 Git 钩子(如
-
Commitlint:
- 用于检查提交信息是否符合预定规范(如 Angular 提交规范)。
- 通过结合
commit-msg钩子检查每次提交的信息,避免提交不符合规范的记录。
常见提交规范
常见的提交信息格式:
<type>(<scope>): <subject>
# 示例
feat(user): add login feature
fix(auth): resolve token validation issue
- type:提交的类型,如
feat(新功能)、fix(修复)、docs(文档)、style(代码格式)、test(测试)。 - scope:可选,用于说明提交影响的范围(如模块或文件)。
- subject:简要描述提交内容。
配置步骤
1. 安装依赖
使用 pnpm 安装 Husky 和 Commitlint 相关依赖:
pnpm install husky @commitlint/config-conventional @commitlint/cli --save-dev
2. 初始化 Husky
初始化 Husky,添加 Git 钩子支持:
pnpm husky install
为 Git 钩子添加 commit-msg:
pnpm husky add .husky/commit-msg "pnpm commitlint --edit $1"
如果没有在.husky目录下生成commit-msg文件 可以手动新建一个commit-msg文件 文件内容如下
pnpm commitlint --edit "$1"
在package.json中配置 Husky:
{
"scripts": {
"prepare": "husky install"
}
}
- 这一步确保每次
npm install或yarn时都会初始化 Husky。
3. 配置 Commitlint
创建 commitlint.config.js 文件,配置提交信息规范:
module.exports = {
// 继承的规则
extends: ["@commitlint/config-conventional"],
// 定义规则类型
rules: {
// type 类型定义,表示 git 提交的 type 必须在以下类型范围内
"type-enum": [
2,
"always",
[
"feat", // 新功能 feature
"fix", // 修复 bug
"docs", // 文档注释
"style", // 代码格式(不影响代码运行的变动)
"refactor", // 重构(既不增加新功能,也不是修复bug)
"perf", // 性能优化
"test", // 增加测试
"chore", // 构建过程或辅助工具的变动
"revert", // 回退
"build", // 打包
],
],
// subject 大小写不做校验
"subject-case": [0],
},
};
4. 验证提交信息
- 提交时,Commitlint 会根据配置的规范检查提交信息。
- 如果提交信息不符合规范,将返回错误,阻止提交。
完成的项目文件结构
.
├── .husky/
│ ├── commit-msg # Commitlint 检查提交信息的钩子
│ ├── pre-commit # 检查代码质量的钩子
├── commitlint.config.js # Commitlint 配置文件
├── package.json
运行验证
-
提交信息不符合规范(如未包含
type),会提示错误并阻止提交:⧗ input: update readme ✖ type must be one of [feat, fix, docs, style, refactor, test, chore] -
提交符合规范的信息即可通过检查。
通过 Husky 和 Commitlint 的组合,可以保证提交信息规范化,为团队协作和版本管理带来更好的体验。