You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Husky pre-commit钩子提交后才执行?如何让其在提交前完成格式化

解决 Husky Pre-Commit 钩子格式化代码未纳入提交的问题

问题核心是 lint:fix 执行后,修改的文件并未被重新加入暂存区,导致提交的仍是格式化前的版本,格式化后的变更留在工作区。以下是两种可行解决方法:

方法一:直接在钩子中补充暂存步骤

修改 .husky/pre-commit 文件,在 lint:fix 后添加 git add 命令,将格式化后的文件重新暂存:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npm run lint:fix
git add --update

注:git add --update 仅暂存已跟踪文件的修改,避免意外纳入未准备提交的新增文件;若需包含所有变更,可改用 git add .

方法二:使用 lint-staged(推荐)

该方式仅对已暂存的文件执行格式化,更高效且避免修改无关文件:

  1. 安装依赖:
npm install lint-staged --save-dev
  1. 在 package.json 中添加 lint-staged 配置:
{
  "scripts": {
    "lint": "next lint",
    "lint:fix": "next lint --fix"
  },
  "lint-staged": {
    "**/*": "next lint --fix"
  },
  "devDependencies": {
    "eslint": "8.10.0",
    "eslint-config-next": "12.1.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^4.0.0",
    "husky": "^7.0.4",
    "lint-staged": "^13.0.0"
  }
}
  1. 更新 .husky/pre-commit 文件:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged

lint-staged 会自动对暂存文件执行格式化,并将修改后的文件重新暂存,确保格式化后的代码被包含在本次提交中。

内容的提问来源于stack exchange,提问作者Kwekel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:39:45