prettier和eslint在html上冲突是因为eslint插件(如eslint-plugin-html/vue)尝试格式化html,而prettier按自身规则重排属性、缩进等,导致保存时循环修改;解决方法是禁用eslint的html格式规则,仅用prettier处理html格式,并通过eslint-plugin-prettier统一协调,同时确保vscode配置不并行触发两者,且版本兼容。

为什么HTML里Prettier和ESLint会互相改来改去
因为 ESLint 默认不处理 HTML,但很多人用 eslint-plugin-html 或 eslint-plugin-vue 把 HTML 片段塞进 JS 文件里检查;而 Prettier 的 html 解析器又会按自己规则重排缩进、属性顺序、引号类型。两者没对齐时,比如 ESLint 要求 class 属性在前,Prettier 却按字母序排,保存一次就触发一次“格式→报错→再格式”的死循环。
只让Prettier管HTML格式,ESLint专注逻辑检查
核心是切断 ESLint 对 HTML 格式类规则的干预,把风格控制权全交给 Prettier:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 卸载或禁用任何试图格式化 HTML 的 ESLint 插件,比如
eslint-plugin-html(除非你真需要它检查内联 script/style 里的 JS/CSS) - 在
.eslintrc.js的extends里去掉所有含html字样的 preset,只保留eslint:recommended和plugin:prettier/recommended - 确保
eslint-plugin-prettier已安装且启用,这样 Prettier 的 HTML 格式结果会被当作 ESLint 的“正确答案”,而不是冲突源 - 在
.prettierrc中显式声明 HTML 相关配置,例如:{ "htmlWhitespaceSensitivity": "css", "endOfLine": "lf" }
VSCode 里别让两个工具同时保存时动手脚
VSCode 默认可能同时启用 ESLint 自动修复和 Prettier 格式化,这是 HTML 冲突最常爆发的地方:
- 删掉
"editor.formatOnSave": true这一行——它会让 Prettier 独立跑一遍,绕过 ESLint 的协调机制 - 只保留
"editor.codeActionsOnSave": { "source.fixAll.eslint": true },确保所有修复(包括 HTML 格式)都经由 ESLint →eslint-plugin-prettier→ Prettier 这条链路执行 - 确认 VSCode 的默认格式化工具设为
esbenp.prettier-vscode,但实际不启用它直接格式化,仅作为底层引擎被 ESLint 调用
Vue/Svelte/React 中内联HTML的特殊处理
框架模板里的 HTML 更容易出问题,因为解析器不同:
- Vue 项目必须用
eslint-plugin-vue,但它自带的格式规则(如vue/html-closing-bracket-newline)会和 Prettier 冲突,解决方案是:在.eslintrc.js的rules中显式关闭这些规则,例如:"vue/html-closing-bracket-newline": "off" - Svelte 项目推荐用
svelte3parser 配合prettier-plugin-svelte,并在.prettierrc中加"plugins": ["prettier-plugin-svelte"],否则 Prettier 会把 Svelte 语法当普通 HTML 错误解析 - React 的 JSX 本身被 Prettier 原生支持,但若用了
eslint-plugin-react的react/jsx-props-no-spreading等规则,它们不涉及格式,可放心共存;真正要关的是react/jsx-indent这类缩进规则
eslint-plugin-prettier 兼容。比如 Prettier 3.2+ 默认用新 HTML 解析器,但旧版 eslint-plugin-prettier@4.x 可能不识别,导致 prettier/prettier 规则失效——此时 ESLint 就不再约束 HTML 格式,冲突看似消失,实则失控。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










