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

Precommit Hook执行Prettier时意外处理未指定目录问题

问题解决思路

你的问题出在lint-staged规则和prettier脚本的逻辑不匹配:

核心问题分析

你配置的lint-staged规则是匹配所有目录下的js/json文件(**/*.{js,json}),然后执行prettier:fix脚本。尽管脚本里指定了backend目录,但这里存在两个关键问题:

  1. npm run执行脚本时不会自动接收lint-staged传递的修改文件列表,导致每次触发都会格式化整个backend目录;
  2. 如果你发现frontend文件被格式化,大概率是你的prettier全局配置(比如.prettierrc或忽略文件)没有排除frontend,或者你误解了执行结果——实际是每次都格式化backend,而非frontend。

正确配置方案

方案一:分目录配置lint-staged规则

让lint-staged只对backend目录的文件执行prettier格式化,frontend文件不触发该操作:

"lint-staged": {
  "backend/**/*.{js,json}": [
    "npm run prettier:fix",
    "git add"
  ],
  "frontend/**/*.{js,json}": [
    "git add"
  ]
}

方案二:让prettier只处理修改的文件

修改prettier:fix脚本,接收lint-staged传递的文件参数,这样只会格式化提交时修改的backend文件,效率更高:

  1. 更新prettier脚本:
"prettier:fix": "npx prettier --write"
  1. 调整lint-staged规则,仅匹配backend文件:
"lint-staged": {
  "backend/**/*.{js,json}": [
    "npm run prettier:fix",
    "git add"
  ]
}

额外排查点

如果还是出现不符合预期的格式化,检查:

  • .prettierignore文件是否正确排除了frontend目录(添加frontend/即可);
  • prettier配置文件中的include字段是否意外包含了frontend。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:53:11