想要让 Prettier 尊重你手动添加的换行符,最核心的配置就是将 proseWrap 选项设置为 "preserve"。
不过,proseWrap 这个配置项主要影响的是Markdown等文本文件。对于代码文件(如JavaScript、HTML等),Prettier 通常会基于自身的规则(如 printWidth)进行格式化,目前没有一个直接的配置可以完全保留所有手动换行。
针对不同类型的文件,这里有几种方法可以帮你达到目的:
📝 对于 Markdown 等文本文件
在 Prettier 的配置文件(如 .prettierrc)中,将 proseWrap 设置为 "preserve"。
{
"proseWrap": "preserve"
}
💻 对于 JavaScript/TypeScript 等代码文件
代码文件的格式化相对复杂,有几种变通方案:
-
使用
// prettier-ignore注释
这是最直接的方法。在希望保留自定义格式的代码块前加上这个注释,Prettier 就会跳过对该代码块的格式化。
// prettier-ignore matrix( 1, 0, 0, 0, 1, 0, 0, 0, 1 )
- 【重要】利用尾随注释技巧
对于链式调用,可以在换行处添加一个空的注释,阻止 Prettier 将其合并为一行。const b = await func1() // .func2('some long text')
🌐 对于 HTML/JSX 文件
HTML 的换行还受到 htmlWhitespaceSensitivity 和 bracketSameLine 等配置的影响,可以根据需求调整。
{
// 设置 HTML 的空格敏感度
"htmlWhitespaceSensitivity": "ignore",
// 控制 HTML 元素尾括号的换行
"bracketSameLine": true
}