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

相关推荐
神奇小汤圆29 分钟前
Unsafe魔法类深度解析:Java底层操作的终极指南
后端
神奇小汤圆1 小时前
浅析二叉树、B树、B+树和MySQL索引底层原理
后端
文艺理科生1 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
前端·后端·架构
千寻girling1 小时前
主管:”人家 Node 框架都用 Nest.js 了 , 你怎么还在用 Express ?“
前端·后端·面试
南极企鹅1 小时前
springBoot项目有几个端口
java·spring boot·后端
Luke君607971 小时前
Spring Flux方法总结
后端
define95271 小时前
高版本 MySQL 驱动的 DNS 陷阱
后端
忧郁的Mr.Li2 小时前
SpringBoot中实现多数据源配置
java·spring boot·后端
暮色妖娆丶3 小时前
SpringBoot 启动流程源码分析 ~ 它其实不复杂
spring boot·后端·spring
Coder_Boy_3 小时前
Deeplearning4j+ Spring Boot 电商用户复购预测案例中相关概念
java·人工智能·spring boot·后端·spring