Prettier配置必须放在项目根目录,因其不向上递归查找,若置于子目录或被node_modules遮挡则退回到默认规则,导致缩进、引号、换行等不一致;monorepo中各子包需独立配置.prettierrc。

为什么Prettier配置必须放在项目根目录
Prettier不会向上递归查找配置文件,如果.prettierrc放在子目录或被node_modules遮挡,格式化就会退回到默认规则——缩进变成4空格、引号变单引号、属性换行策略错乱,直接导致团队成员保存后代码差异巨大。
-
.prettierrc必须位于项目根目录,且文件名全小写、无扩展名 - 避免在
package.json里内联配置,它不支持所有选项(比如htmlWhitespaceSensitivity) - 若用 monorepo,每个子包需独立放
.prettierrc,不能依赖 workspace 根配置
EditorConfig和Prettier冲突时以谁为准
EditorConfig只管基础编辑行为(缩进字符、换行符、末尾空格),而Prettier控制语义级格式(属性顺序、标签换行、注释空格)。两者不是替代关系,是分层协作:前者防环境差异,后者保结构一致。一旦冲突,比如.editorconfig设indent_size = 4但.prettierrc设tabWidth: 2,VS Code会优先执行Prettier的tabWidth,但编辑器新建行仍按EditorConfig缩进——结果就是光标对齐错位、手动敲空格后被自动删掉。
- 统一
indent_size和tabWidth值,推荐都设为2 -
EditorConfig中禁用indent_style = tab,强制space,避免Tab/Space混用 - 检查VS Code设置里是否勾选了“Format on Save”,否则
Prettier形同虚设
HTMLHint检查哪些Prettier不管的事
Prettier只格式化,不校验语义正确性。HTMLHint则能发现Prettier完全忽略的问题:比如<img alt="团队开发中HTML代码质量的一致性维护方案" >缺alt、<a></a>没href、自闭合标签写了这种错误闭合、或者class名用了驼峰(userCard)却没报错——这些都会影响可访问性和维护性,但Prettier连看都不会看。
- 必须配
.htmlhintrc,启用attr-accesskey、attr-req-alt、attr-no-duplication等核心规则 - 配合
lint-staged+Husky,在git add后立刻检查,不通过就阻断提交 -
HTMLHint不处理缩进或引号,别指望它替代Prettier——它补的是语义缺口
团队新人第一次提交总崩格式,怎么破
新人常因本地VS Code没装Prettier插件、或没启用“Format on Save”,一保存就把整个文件重排成非标准样式;更隐蔽的是,他们可能用系统自带文本编辑器改了.editorconfig,把end_of_line = lf改成crlf,导致Git显示大量“仅换行符变更”的脏diff。
立即学习“前端免费学习笔记(深入)”;
- 在
README.md顶部加一行:npx prettier --write "**/*.html",新人可一键修复全部文件 - 把
.prettierrc和.editorconfig放进.gitattributes,声明*.html text eol=lf,强制统一换行符 - CI流程里加
prettier --check "**/*.html",失败则拒绝合并——这是最后防线
.prettierrc或关掉保存格式化,整条链就断了。



















