如何在 prettier 中保留空花括号中的单个空格(如 `{ }`)?prettier 默认会将空花括号 `{}` 格式化为紧凑形式,即使启用了 `bracketspacing: true`,该选项仅影响对象字面量和导入/导出括号的空格,**不控制函数体或类方法体中空代码块的空格**——此行为是硬编码的,不可通过配置关闭。
Prettier 的设计哲学强调一致性与最小化配置,因此对空代码块(如函数体、构造函数体、箭头函数体等)中的 {} 采用强制无空格格式(即 {}),无论 bracketSpacing 设置为何值。这一点常被误解:bracketSpacing: true 仅作用于以下场景:
ss C { m() { } }、() => { } 等语句块中的花括号。✅ 正确示例(bracketSpacing: true 生效):
// .prettierrc.json
{
"bracketSpacing": true,
"arrowParens": "always"
}// 对象字面量保持空格
const obj = { name: "Alice", age: 30 };
// 解构导入保持空格
import { useState, useEffect } from "react";❌ 无法实现(Prettier 强制覆盖):
class Entity {
constructor(readonly id: string) { } // 保存后自动变为 {}
}
const fn = () => { }; // 自动变为 () => {}⚠️ 注意事项:
? 总结:Prettier 不提供控制空语句块花括号空格的开关。接受 {} 是其标准输出,也是社区广泛采纳的简洁风格。如需严格 { },应评估是否必须由 Prettier 实现——更合理的方案是统一团队认知,或通过编辑器片段(Snippet)辅助输入,而非对抗格式化器的核心约定。