husky提交代码注释规范

37 阅读1分钟

husky 使用

安装依赖

pnpm add -D husky @commitlint/cli @commitlint/config-conventional

初始化husky

npx husky init

添加配置

同时它会自动往 package.json 添加,如果没有就主动添加:

{
  "scripts": {
    "prepare": "husky install"
  }
}

创建 commit-msg 钩子

创建文件

.husky/commit-msg

输入内容

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

echo "🔍 正在校验提交信息格式..."
pnpm exec commitlint --edit "$1"

创建自定义 commitlint 配置文件

根目录下创建文件 commitlint.config.js ,此处部分是个人自定义,可以根据自己项目需求进行不同配置:

export default {
  // 自定义规则
  rules: {
    // 只允许 feat 和 fix 两种类型
    'type-enum': [2, 'always', ['feat', 'fix']],

    // type 必填(冒号前不能空)
    'type-empty': [2, 'never'],

    // 提交描述 subject 必填(冒号后不能空)
    'subject-empty': [2, 'never'],

    // 禁止以句号结尾
    'subject-full-stop': [2, 'never', '.'],

    // type 必须小写
    'type-case': [2, 'always', 'lower-case'],
  },

  // 自定义友好错误消息(增强提示)
  parserPreset: {
    parserOpts: {
      headerPattern: /^(\w*)(?:((.*)))?: (.*)$/,
      headerCorrespondence: ['type', 'scope', 'subject'],
    },
  },

  // 自定义提示说明
  prompt: {
    messages: {
      skip: ':skip',
      max: '上限 %d 个字符',
      min: '下限 %d 个字符',
      emptyWarning: '描述不能为空!',
      upperLimitWarning: '超出长度限制!',
      lowerLimitWarning: '内容太短!',
    },
  },
};

可选增强(添加中文提示)

.husky/commit-msg 文件添加友好提示

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

echo "🔍 正在校验提交信息..."
pnpm exec commitlint --edit "$1"

# 如果上一步出错(退出码不为0),显示错误提示
if [ $? -ne 0 ]; then
  echo "❌ 提交信息不符合规范!"
  echo "✅ 正确格式示例:"
  echo "   feat: 新增登录功能"
  echo "   fix: 修复页面加载错误"
  exit 1
fi

🧪 六、测试效果

git add .
git commit -m "feat: 新增登录功能"
git commit -m "随便"

注:

pre-commit 文件中如果是

npm test

但是还是会报错,需要在package.json 添加

  "scripts": {
    "test": "echo "no tests configured""
  },