nodejs (express / koa)项目用ghooks + validate-commit-msg 实现 git提交时校验eslint+提交消息规范验证

为项目添加 ghooks + validate-commit-msg

以下是为项目添加 ghooks 和 validate-commit-msg 来实现 git 提交检查的步骤:

1. 安装必要的依赖包

首先,需要安装 ghooks 和 validate-commit-msg 作为开发依赖:

bash 复制代码
npm install ghooks validate-commit-msg --save-dev

2. 配置 package.json

在 package.json 文件中添加 ghooks 的配置,指定需要运行的 git 钩子:

json 复制代码
"config": {
  "ghooks": {
    "pre-commit": "npm run lint",
    "commit-msg": "validate-commit-msg"
  }
}

同时,确保项目中有 lint 脚本:

json 复制代码
"scripts": {
  "lint": "eslint ."
}

3. 确保 ESLint 配置正确

根据你使用的 ESLint 版本,选择正确的配置方式:

  • 对于 ESLint v9.0.0 及以上版本,需要创建 eslint.config.js 文件(CommonJS 格式):

    javascript 复制代码
    const globals = require('globals');
    const js = require('@eslint/js');
    
    module.exports = [
      {
        files: ['**/*.js'],
        languageOptions: {
          ecmaVersion: 12,
          sourceType: 'module',
          globals: {
            ...globals.node,
            ...globals.es2021
          }
        },
        rules: {
          ...js.configs.recommended.rules,
          'no-console': 'warn',
          'semi': ['error', 'always'],
          'quotes': ['error', 'single']
        }
      },
      {
        ignores: ['node_modules/', 'dist/']
      }
    ];
  • 对于 ESLint v8.x 及以下版本,可以使用传统的 .eslintrc.json 文件。

4. 确保 git 钩子路径配置正确

这是非常重要的一步,确保 git 没有配置错误的钩子路径:

bash 复制代码
# 检查当前 git hooks 路径配置
git config core.hooksPath

# 如果有错误的配置,重置为默认值
git config --unset core.hooksPath

5. 重新安装依赖以触发 ghooks 初始化

bash 复制代码
npm install

执行此命令后,ghooks 会自动在 .git/hooks 目录下创建相应的钩子文件。

6. 验证安装是否成功

可以通过以下方式验证安装是否成功:

  1. 检查 .git/hooks 目录:确认 pre-commit 和 commit-msg 文件是否存在且有执行权限

  2. 测试 ESLint 命令

    bash 复制代码
    npm run lint
  3. 测试提交消息验证

    bash 复制代码
    # 测试有效格式
    npx validate-commit-msg 'feat: add new feature'
    
    # 测试无效格式
    npx validate-commit-msg 'xxxxx'
  4. 实际测试 git 提交:尝试进行一次 git 提交,检查是否会执行 ESLint 和提交消息验证

常见问题及解决方案

  1. 钩子不执行:检查 git hooks 路径配置是否正确

  2. ESLint 报错:确保使用了与 ESLint 版本匹配的配置文件格式

  3. Windows 环境问题:确保钩子文件有正确的执行权限

  4. 钩子路径冲突:避免同时使用多个 git hooks 管理工具(如 husky 和 ghooks)

通过以上步骤,你可以成功为项目添加 ghooks 和 validate-commit-msg,实现 git 提交时的代码质量和提交消息格式检查。

相关推荐
摇滚侠1 分钟前
SpringMVC 入门到实战 文件上传 75-77
java·后端·spring·maven·intellij-idea
fox_lht2 小时前
15.3.改进我们之前的输入、输出项目
开发语言·后端·学习·rust
大鸡腿同学2 小时前
用 AI 肝了一个星期的智能客服助手,看看怎么个事
后端
IT_陈寒2 小时前
Python的os.path.join居然能这么坑?
前端·人工智能·后端
张忠琳2 小时前
【Go 1.26.4】Golang Channel 深度解析
开发语言·后端·golang
Rain5093 小时前
2.1 Nest.js 项目初始化与模块化架构
开发语言·前端·javascript·后端·架构·数据分析·node.js
cjp5603 小时前
009. ASP.NET WEB API 用户关联esp32设备
前端·后端·asp.net
贺国亚3 小时前
Text-to-SQL与Analytics-Agent
后端
一只叫煤球的猫3 小时前
ThreadForge 源码解读二:一个 Task 从 submit 到完成,内部到底发生了什么?
java·后端·面试