vs code 中 prettier 不格式化 html 是因默认禁用其接管,需手动设默认格式器为 esbenp.pretterr-vscode、关闭内置 html.format.enable、配置 printwidth:100 和 htmlwhitespacesensitivity:"css"。

VS Code 里 Prettier 不格式化 HTML?先关内置格式器
不是插件没装,也不是 .prettierrc 写错了,而是 VS Code 默认禁用了 Prettier 对 .html 文件的接管。即使你装了 Prettier - Code formatter,右键“Format Document”也大概率不会弹出 Prettier 选项。
必须手动指定默认格式化工具:
- 打开任意一个
.html文件 - 右键 → Format Document With… → Configure Default Formatter…
- 从列表中选择
esbenp.prettier-vscode - 同时确认设置里已启用
Editor: Format On Save
还要检查项目根目录下的 .vscode/settings.json 或全局设置,确保没有写死 "html.format.enable": true——这是 VS Code 内置 HTML 格式化器的开关,和 Prettier 冲突。
printWidth 设太小会让 HTML 属性疯狂换行
常见现象:<div class="a b c d e f" data-id="123" title="long text"> 被强行拆成 3 行,破坏可读性。这不是 bug,是 Prettier 按 <code>printWidth(默认 80)主动拆分的结果。
关键配置项:
-
printWidth: 100——建议设为 100;HTML 属性普遍比 JS 多,80 容易误拆;避免设 60,那基本等于放弃单行属性 -
htmlWhitespaceSensitivity: "css"——必须设这个值,否则 Prettier 可能把<p><img>text</p>错误地拆成多行,破坏行内元素布局逻辑 - 不要设
bracketSameLine: true(即把>放在最后一行末尾),HTML 标签多属性时它会让结尾变得极难定位
正确配置片段(.prettierrc):
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
{
"printWidth": 100,
"htmlWhitespaceSensitivity": "css",
"tabWidth": 2,
"useTabs": false
}
命令行用 prettier 格式化 HTML 必须显式指定 parser
直接运行 prettier --write index.html 很可能没反应,因为 Prettier 默认不识别纯 HTML 文件类型。
必须加 --parser html:
prettier --parser html --write index.html- 批量处理多个文件:
prettier --parser html --write "src/**/*.html" - 如果 HTML 里混了
<script></script>中的 ES6+ 语法,需额外配--parser babel并设htmlWhitespaceSensitivity: "ignore"避免缩进错乱
注意:Prettier 不修复缺失闭合标签,也不处理 Vue 的 <template></template> 或 JSX 中的标签——它只格式化合法、完整、带 声明的 HTML 文件。
别指望 Prettier 处理样式语义
<img align="right"> 会被保留原样,不会转成 CSS;<img style="max-width:90%"> 不会自动加 class 或提取到外部 CSS。Prettier 只格式化结构、属性顺序、引号、缩进和换行,**不解析也不修改任何样式语义**。
如果你发现图片对齐“失效”,问题一定出在 CSS 层:
- 忘记给父容器设
text-align: center - 没加
display: block让margin: 0 auto生效 - 响应式断点没覆盖目标设备宽度
这些和 Prettier 无关,也永远不会被它碰。










