根本原因是eslint与prettier职责未分离,eslint自带indent、quotes等格式规则,与prettier强制覆盖同一类规则导致冲突;必须用eslint-config-prettier禁用eslint所有样式规则,并在vscode中设"editor.defaultformatter": "esbenp.prettier-vscode"且关闭eslint自动修复。

为什么 Prettier 和 ESLint 会互相报错?
常见现象是:运行 npm run lint:fix 后,npm run format 又改回去;或者保存文件时格式反复“抖动”。根本原因是 ESLint 自带部分格式化规则(如 indent、quotes),而 Prettier 也强制覆盖同一类规则,两者没划清职责边界。
- 必须禁用 ESLint 中所有与格式相关的规则,只保留语法和逻辑检查职责
-
eslint-config-prettier不是可选插件,而是必需项——它专门负责关闭 ESLint 里和 Prettier 冲突的规则 - 不要在
.eslintrc.js里手动写"indent": "off"这类逐条关闭,容易漏配;应直接使用plugin:prettier/recommended扩展
如何让 VS Code 保存时只走 Prettier,不触发 ESLint auto-fix?
VS Code 默认可能同时启用多个格式化工具,导致保存时调用 ESLint 的 fix 功能,跟 Prettier 抢着改 HTML 属性顺序或引号风格。
- 在项目根目录的
.vscode/settings.json中明确指定:"html.format.enable": false(关掉内置 HTML 格式器) - 设置
"editor.defaultFormatter": "esbenp.prettier-vscode",且确保该插件已安装并启用 - 检查 workspace 设置是否被 user 级设置覆盖——团队新成员容易忽略这点,导致本地行为不一致
HTML 文件被跳过格式化?检查这三个路径过滤点
即使配置了 Prettier,某些 HTML 文件仍不生效,通常卡在路径匹配环节。
-
.prettierignore里是否误写了**/*.html或public/**/*.html?Prettier 默认处理所有.html文件,除非显式排除 -
lint-staged配置中是否只写了"*.{js,jsx,ts,tsx}",漏掉了"*.html"?提交前自动格式化必须显式包含 - VS Code 的 “Format Document With…” 快捷菜单里,是否为当前 HTML 文件手动选错了格式化工具?右键 → Format Document With → 选 “Prettier” 并设为默认
CI 检查失败但本地能过?注意 Git 换行符和空格差异
CI 环境(如 GitHub Actions)报 Prettier check failed,但本地 prettier --check 通过,大概率是换行符或不可见空格不一致。
- 确认项目根目录有
.gitattributes,内容含:* text=auto eol=lf,强制统一为 LF 换行 - Prettier 对空白字符敏感,尤其
htmlWhitespaceSensitivity: "css"会影响标签间空格处理;若 CI 和本地配置不一致,结果必然不同 - 避免在 Windows 上用记事本编辑
.prettierrc,BOM 头会导致 Prettier 解析失败——用 VS Code 或 Vim 保存为 UTF-8 无 BOM
实际落地时,最常被忽略的是 eslint-config-prettier 的加载顺序和 .gitattributes 的存在。这两处一错,整个链路就变成“表面统一、实际混乱”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











