
Prettier 目前不支持将 HTML 开始标签的首个属性保留在同一行(即
prettier 目前不支持将 html 开始标签的首个属性保留在同一行(即 `
Prettier 的设计理念是“约定优于配置”——它刻意限制选项数量,以确保团队间代码风格高度统一。在 HTML 格式化中,Prettier 始终采用 强制换行 + 缩进对齐 的策略:即使 printWidth 足够宽、singleAttributePerLine: true 已启用,它仍会将起始标签的首属性(如 class)移至下一行,并统一缩进所有属性:
<!-- Prettier 总是输出这种格式(不可更改) --> <div class="test-class" any-attr> </div>
而非你期望的紧凑单行起始形式:
<!-- ❌ Prettier 无法生成此格式 --> <div class="test-class" any-attr> </div>
⚠️ 注意事项:
- singleAttributePerLine: true 仅控制「是否每个属性独占一行」,但不改变首行是否包含标签名;它默认为 false,设为 true 后效果是所有属性(包括第一个)都换行并缩进,反而更偏离目标。
- 调整 printWidth(如设为 200)也无效——Prettier 对 HTML 标签的换行逻辑是基于语法结构而非字符宽度。
- 官方文档明确未提供 firstAttributeOnSameLine、keepOpeningTagOnOneLine 等类似选项,且该行为被归类为 intentional limitation,社区多次提案均未被采纳。
✅ 替代方案建议:
- 若此格式对团队至关重要,可考虑切换至更灵活的格式化工具(如 Prettyhtml 或 eslint-plugin-prettier 配合自定义 ESLint 规则进行校验,但无法真正格式化)。
- 或接受 Prettier 的一致性优先原则,在团队规范中统一适应其输出风格——这正是 Prettier 的核心价值所在:消除争议,聚焦逻辑而非样式。
总之,这不是配置遗漏,而是设计取舍。与其寻找不存在的选项,不如评估是否真需打破 Prettier 的一致性契约。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











