git commit前自动执行lint检查怎么设置?husky+lint-staged详解

 更新时间:2026年07月30日 09:07:36   作者:mrhaoxiaojun  
还在为代码提交后才检查规范而烦恼吗?本文教你利用Git PreCommit钩子,结合husky和lint-staged,在git commit前自动执行prettier和ESLint代码检查,拒绝不规范代码,提升团队效率

在软件开发过程中,代码风格检查(Code Linting)是保障代码规范和一致性的有效手段。

过去,Lint 的工作一般在 CodeReview 或者 CI 的时候进行,但这样会导致问题的反馈链,浪费不必要的时间。因此,我们需要利用 Git 的 Pre Commit 钩子,将 Lint 过程放到开发者提交代码之前。

简介

简单介绍一下这三个工具:

  • prettier 用来优化代码格式,比如缩进、空格、分号等等
  • husky可以用于实现各种 Git Hook。这里主要用到 pre-commit这个 hook,在执行 commit 之前,运行一些自定义操作
  • lint-staged 用于对 Git 暂存区中的文件执行代码检测

实现过程

待提交的代码

  • -> git add 添加到暂存区
  • -> 执行 git commit
  • -> husky注册在git pre-commit的钩子调起 lint-staged
  • -> lint-staged 取得所有被提交的文件依次执行写好的任务(ESLint 和 Prettier)
  • -> 如果有错误(没通过ESlint检查)则停止任务,等待下次commit,同时打印错误信息
  • -> 成功提交

安装

首先,我们使用下面的命令把 huskylint-staged 安装到package.json的 devDependencies中:

npm install husky lint-staged --save-dev

或者

yarn add husky lint-staged --dev

配置package.json(无prettier)

将下面的代码追加到 package.json文件中:

"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --open",
    ...
    "eslint": "eslint --ext .js,.vue src",
    "eslintfix": "eslint --fix --ext .js,.vue src",
    "lint-staged": "lint-staged"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint-staged"
    }
  },
  "lint-staged": {
    "**/*.{js,vue}": [
      "npm run eslint"
    ]
  },

这里我没有 加 prettier

配置package.json (有prettier)

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{js,vue}": [
      "prettier --write",
      "vue-cli-service lint",
      "git add"
    ]
  }
}

上面示例中lint-staged下的选项是vue项目中常用的配置,你可以根据你项目的技术栈配置相应的代码检查。

  • prettier --write会自动美化你的代码格式
  • vue-cli-service lint是vue项目中语法检查
  • git add将更改后到文件添加到暂存区

.prettierrc文件

新建一个.prettierrc文件,将以下内容复制进去:

{
  "trailingComma": "es5", // 尾随逗号
  "tabWidth": 2, // 缩进
  "semi": false, // 句尾分号
  "singleQuote": true, // 单引号
  "end-of-line": "lf" // 换行符
}

这样,当在终端输入 git commit命令提交代码的时候,Lint 程序便会自动检查本次提交所修改的文件是否符合本项目的代码规范。如果代码不符合规范,便会拒绝提交代码。

如果想要跳过 Lint 程序,可以使用 git commit -no-verify进行提交。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IDEA中配置Git的Push键

    IDEA中配置Git的Push键

    在学习git的过程中,当然需要将本地仓库的资源push到远程仓库中,但在idea中使用git是发现没有push这个按钮,本文主要介绍了IDEA中配置Git的Push键,感兴趣的可以了解一下
    2023-12-12
  • Git使用二分法git bisect精准定位Bug的全面指南

    Git使用二分法git bisect精准定位Bug的全面指南

    git bisect是Git内置的调试神器,利用二分查找算法,将原本需要线性排查(O(n))的提交历史,压缩到对数级别(O(log n)),哪怕有 1000 个提交,最多只需 10 次验证就能精准锁定引入 Bug 的罪魁祸首,本文给大家介绍的非常详细,需要的朋友可以参考下
    2026-05-05
  • Git如何实现checkout远程tag

    Git如何实现checkout远程tag

    这篇文章主要介绍了Git如何实现checkout远程tag,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Git 教程之安装配置详解

    Git 教程之安装配置详解

    本文主要介绍Git 安装配置,这里对Linux,Windows,Mac平台的安装做了详细介绍,有需要的朋友可以参考下
    2016-09-09
  • Python虽然很火找工作为什么这么难

    Python虽然很火找工作为什么这么难

    这两年因为第三波人工智能热潮让 Python火了一把,让中小学生、非程序员(产品经理、运营)都加入到了学习Python的行列,那之前Python火吗
    2019-06-06
  • Scratch3.0初始化加载七牛云上的sbs文件的方法

    Scratch3.0初始化加载七牛云上的sbs文件的方法

    今天通过本文给大家介绍Scratch3.0初始化加载七牛云上的sbs文件的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-08-08
  • 在 git 中取消 __pycache__ 文件的方法

    在 git 中取消 __pycache__ 文件的方法

    _pycache__ 文件夹是 Python 编译器用来存放编译后的 Python 文件的,在项目中不需要提交这些文件,因为它们可以通过编译源代码重新生成,这篇文章主要介绍了如何在 git 中取消 __pycache__ 文件,需要的朋友可以参考下
    2023-01-01
  • Git 命令使用技巧提供工作效率

    Git 命令使用技巧提供工作效率

    这篇文章主要介绍了Git 命令使用技巧提供工作效率的相关资料,需要的朋友可以参考下
    2016-09-09
  • vscode终端输出中文乱码问题解决图文教程

    vscode终端输出中文乱码问题解决图文教程

    我们在使用vscode的时候常会遇见各种问题,下面这篇文章主要给大家介绍了关于vscode终端输出中文乱码问题解决的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • git丢弃本地修改的所有文件(新增、删除、修改)

    git丢弃本地修改的所有文件(新增、删除、修改)

    这篇文章主要介绍了git丢弃本地修改的所有文件(新增、删除、修改),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论