格式化器
如何使用 Biome 格式化器。
Biome 是一个有主见的格式化器,支持多种语言。它遵循与 Prettier 类似的理念,只支持少量选项,以免关于风格的争论演变成为关于 Biome 选项的争论。它刻意抵制新增选项的冲动,以避免团队陷入关于细枝末节的争论,从而让他们专注于真正重要的事情。
CLI
以下命令检查 src 目录中文件的格式。如果发现未格式化的代码,它会输出文本差异。
npx @biomejs/biome format ./srcpnpx @biomejs/biome format ./srcbunx --bun @biomejs/biome format ./srcdeno run -A npm:@biomejs/biome format ./srcyarn exec biome -- format ./src如果你想应用新的格式化,请传入 --write 选项:
npx @biomejs/biome format --write ./srcpnpx @biomejs/biome format --write ./srcbunx --bun @biomejs/biome format --write ./srcdeno run -A npm:@biomejs/biome format --write ./srcyarn exec biome -- format --write ./src该命令接受文件和目录的列表。
biome format ./src/**/*.test.{js,ts}
关于所有可用选项的更多信息,请查看 CLI 参考。
选项
Biome 提供一些选项来调整其格式化器的行为。与其他工具不同,Biome 将语言无关的选项与语言相关的选项分开。
格式化器选项可以在 CLI 上设置,也可以通过 Biome 配置文件设置。从 v1.9 起,Biome 支持加载 .editorconfig 文件。
建议使用 Biome 配置文件,以确保 Biome CLI 和 Biome LSP 应用相同的选项。将应用以下默认值:
{
"formatter": {
"enabled": true,
"formatWithErrors": false,
"ignore": [],
"attributePosition": "auto",
"indentStyle": "tab",
"indentWidth": 2,
"lineWidth": 80,
"lineEnding": "lf"
},
"javascript": {
"formatter": {
"arrowParentheses":"always",
"bracketSameLine": false,
"bracketSpacing": true,
"delimiterSpacing": false,
"jsxQuoteStyle": "double",
"quoteProperties": "asNeeded",
"semicolons": "always",
"trailingCommas": "all"
}
},
"json": {
"formatter": {
"trailingCommas": "none"
}
}
}Biome 格式化器支持的主要语言无关选项有:
- 缩进风格(默认:
tab):使用空格或制表符进行缩进; - 缩进宽度(默认:
2):每一级缩进的空格数。 - 行宽(默认:
80):Biome 换行代码的列宽;
更多细节请查看 配置参考。
忽略代码
有时候,格式化后的代码并不理想。
忽略整个文件
你可以在文件顶部使用 biome-ignore-all format: reason 注释,对整个文件抑制(忽略)格式化器:
例如,在 JavaScript 中:
// biome-ignore-all format: 生成的文件
const expr1 =
[
(2 * n) / (r - l),
0,
(r + l) / (r - l),
-1,
0,
];
const expr2 =
[
(2 * n) / (r - l),
0,
(r + l) / (r - l),
-1,
0,
];忽略节点
如果你只想抑制代码的一部分(节点),请使用抑制注释 biome-ignore format: reason
// biome-ignore format: 原因示例:
const expr =
// biome-ignore format: 数组不应被格式化
[
(2 * n) / (r - l),
0,
(r + l) / (r - l),
0,
0,
(2 * n) / (t - b),
(t + b) / (t - b),
0,
0,
0,
-(f + n) / (f - n),
-(2 * f * n) / (f - n),
0,
0,
-1,
0,
];