当前位置: 代码网 > it编程>编程语言>其他编程 > git commit前自动执行lint检查怎么设置?husky+lint-staged详解

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

2026年07月30日 其他编程 我要评论
在软件开发过程中,代码风格检查(code linting)是保障代码规范和一致性的有效手段。过去,lint 的工作一般在 codereview 或者 ci 的时候进行,但这样会导致问题的反馈链,浪费不

在软件开发过程中,代码风格检查(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进行提交。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com