说一说ESLint+Prettier生效的原理

面试中常见问法:

  • 你们项目里 ESLint、Prettier 是怎么生效的?
  • Husky 和 lint-staged 分别是做什么的?
  • npm run prepare 做了什么?
  • 为什么提交前只检查暂存文件,而不是全项目?
  • ESLint 和 Prettier 有什么区别?
  • 如果 git commit 被拦截了,你会怎么排查?
  • eslint --fixprettier --write 有什么区别?

项目里 ESLint 和 Prettier 主要通过两种方式生效:一种是手动执行 npm scripts,另一种是提交前通过 Git hooks 自动触发。

在控制台手动执行指令: 比如 npm run lint 实际执行的是 eslint .,ESLint 会读取项目根目录下的 eslint.config.js,加载对应规则,比如 Antfu 的 ESLint 配置,用来检查 Vue、TypeScript、JavaScript 等文件。

Prettier 类似,npm run format 实际执行的是 prettier . --write,它会读取 .prettierrc.prettierignore,按照统一规则格式化文件

git commit 触发

提交前自动检查是通过 Husky 和 lint-staged 实现的。 Husky 负责接管 Git hook,比如 pre-commit

lint-staged 负责读取本次已经 git add 到暂存区的文件, 在 package.json 中添加需要校验的文件类型:

json 复制代码
{

"lint-staged": {

"*.{js,jsx,ts,tsx,vue}": "eslint --fix",

"*.{css,scss,less,html,json,jsonc,md,yml,yaml}": "prettier --write"

}

}
相关推荐
赵广陆10 小时前
企业实战:Web服务端搭建
前端·langchain·langgraph
常宇佳10 小时前
vue3 实战系列之无法识别vue组件
前端·javascript·vue.js
掘金者阿豪11 小时前
Codex 怎么突然变慢了?一个需求跑几十分钟,我才发现它的工作方式已经变了
前端·后端
两万五千个小时11 小时前
DeepSeek Harness 从 0 开始:08 Compaction 模块(上下文压缩)
人工智能·程序员·架构
用户9314563556611 小时前
从 3 秒到 300 毫秒:一次真实的前端首屏性能优化全记录
前端
whn197711 小时前
dm9安装初体验
前端
阿黎梨梨11 小时前
从零搞懂 JWT 登录鉴权:一张“电子通行证”的诞生记
前端
用户9210802628611 小时前
ChatMessageList 消息列表组件:基于 BubbleList 搭建 AI 对话展示区
前端
得物技术11 小时前
EP-Harness:从个人 AI Coding 到团队级 Agent 工作流|得物技术
后端·程序员·架构