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

相关推荐
AINative软件工程1 小时前
模型路由别写死在代码里:Policy-as-Code 才是 LLM 成本和质量的刹车片
后端
小蒜学长2 小时前
“喵汪联盟”宠物领养系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·宠物
SomeB1oody2 小时前
【RustyML入门】3.7. 循环层
开发语言·后端·机器学习·rust·教程
东风破_12 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
嘻哈∠※12 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
卷无止境12 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
卷无止境13 小时前
FastAPI 的Admin面板生态
后端·python
捡田螺的小男孩15 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员
IT_陈寒15 小时前
Redis集群这个坑,差点让我通宵
前端·人工智能·后端
用户83562907805115 小时前
Python 自动化 Word 文本框处理:创建、定位、填充内容与管理
后端·python