Biome

格式化器

如何使用 Biome 格式化器。

Biome 是一个有主见的格式化器,支持多种语言。它遵循与 Prettier 类似的理念,只支持少量选项,以免关于风格的争论演变成为关于 Biome 选项的争论。它刻意抵制新增选项的冲动,以避免团队陷入关于细枝末节的争论,从而让他们专注于真正重要的事情。

CLI

以下命令检查 src 目录中文件的格式。如果发现未格式化的代码,它会输出文本差异。

npx @biomejs/biome format ./src
pnpx @biomejs/biome format ./src
bunx --bun @biomejs/biome format ./src
deno run -A npm:@biomejs/biome format ./src
yarn exec biome -- format ./src

如果你想应用新的格式化,请传入 --write 选项:

npx @biomejs/biome format --write ./src
pnpx @biomejs/biome format --write ./src
bunx --bun @biomejs/biome format --write ./src
deno run -A npm:@biomejs/biome format --write ./src
yarn 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,
  ];