Prettier 为什么没格式化我的 HTML 标签换行?

Code°采涵 阅读 3

我用 Prettier 格式化 HTML 文件,但发现它没把长标签自动换行,看起来特别挤。明明在 .prettierrc 里设置了 printWidth: 80,为啥不起作用?

比如下面这段代码,Prettier 格式化后还是一整行:

<div class="card" style="background-color: white; padding: 16px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
  <h2>Hello World</h2>
</div>

是我配置错了,还是 Prettier 对 HTML 的换行支持有限?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
♫志燕
♫志燕 Lv1
兄弟你这个坑我踩过,说多了都是泪。

Prettier 对 HTML 的处理逻辑跟 JavaScript 不太一样。它默认不会因为超过 printWidth 就把 HTML 属性换行,这是官方故意的设计决策——他们认为属性换行会导致 git diff 很难看。

解决方案有两个:

一是检查你的 Prettier 版本。如果是 2.x 系列,可以尝试在 .prettierrc 里加这个配置:

{
"htmlWhitespaceSensitivity": "strict"
}


不过说实话,这个选项主要影响的是属性之间的空格处理,对换行帮助有限。

二是接受现实,要么手动把长属性拆成多行,要么忍忍。我之前项目里遇到这种情况,最后都是手动调整的,或者用 HTML 格式化插件配合 VS Code 的格式化功能。

对了,如果你用的是 Vue 文件里的 template,情况和 HTML 是一样的,都受这个行为约束。
点赞
2026-03-13 16:07