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 提交时的代码质量和提交消息格式检查。

相关推荐
天天摸鱼的java工程师几秒前
别再写那些重复代码了!8年Java老兵教你用 Hutool 提升开发效率
java·后端
喝杯绿茶2 分钟前
springboot中的事务
java·spring boot·后端
昨天的猫4 分钟前
原来项目中的观察者模式是这样玩的
后端·设计模式
麦兜*6 分钟前
多阶段构建:打造最小化的 Spring Boot Docker 镜像
java·spring boot·后端·spring cloud·docker
RustCoder7 分钟前
Rust 1.91 发布:ARM Windows 正式跻身顶级支持,悬空指针警告上线
后端·性能优化·rust
用户8356290780517 分钟前
Python创建PDF文档:解锁高效PDF创建的能力
后端·python
golang学习记13 分钟前
FastAPI + SQLModel 实战:一个模型搞定数据库与 API
后端
oak隔壁找我15 分钟前
Spring Boot Starter 入门教程
java·后端
Data_Adventure17 分钟前
Java 与 TypeScript 的核心对比
前端·后端
Data_Adventure25 分钟前
从前端到 Java 后端:一份详细转型路线指南
前端·后端