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

如何避免执行npm i时重复向pre-commit添加npx lint-staged?

解决husky pre-commit钩子重复添加命令的问题

问题原因

每次执行npm i时,prepare脚本里的husky add命令会追加指定内容到pre-commit文件中,而非检查内容是否已存在,导致相同命令被重复添加。

解决方案

方案1:检查文件内容后再添加(推荐,不覆盖原有自定义内容)

修改package.json中的prepare脚本,通过shell命令先检查pre-commit文件是否已包含目标命令,仅当不存在时才执行添加操作:

"prepare": "husky install && grep -q 'npx lint-staged' .husky/pre-commit || npx husky add .husky/pre-commit \"npx lint-staged\""
  • grep -q 'npx lint-staged' .husky/pre-commit:静默检查文件中是否存在目标命令,存在则返回成功状态
  • ||:仅当前面的检查失败(即文件中无该命令)时,才执行后面的husky add命令

方案2:简化prepare脚本(适合钩子已初始化完成后)

先执行一次npm i完成钩子的初始化创建,之后修改package.json的prepare脚本,只保留husky install(仅负责启用钩子,不会修改钩子文件内容):

"prepare": "husky install"

后续再执行npm i时,就不会再往pre-commit文件中添加命令了。

方案3:使用husky set覆盖钩子内容(适合钩子仅需单条命令的场景)

如果你的pre-commit钩子只需要npx lint-staged这一条命令,可以用husky set代替husky add,set命令会直接覆盖钩子文件的内容,而非追加:

"prepare": "husky install && npx husky set .husky/pre-commit \"npx lint-staged\""

注意:若钩子文件中有其他自定义命令,使用set会将其覆盖,需谨慎使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:57:06