配置参考
如何用 biome.json 定制和配置 Biome。
$schema
允许传入指向 JSON schema 文件的路径。
我们为 biome.json/biome.jsonc 文件发布了一份 JSON schema 文件。
如果 @biomejs/biome NPM 包安装在 node_modules 文件夹中,你可以在其中为该 schema 指定一个相对路径:
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json"
}如果你在解析实际文件时遇到问题,可以使用本站发布的那份:
{
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json"
}extends
指向其他 Biome 配置文件的路径列表。Biome 会解析并应用 extends 列表中所含文件的配置项,最后再应用本 biome.json/biome.jsonc 文件中包含的选项。
要继承的路径顺序,从相关性最低到相关性最高排列。
自 v2 起,该选项接受一个必须等于值 "//" 的字符串,可在搭建 monorepo 时使用。
root
该配置是否应被视为根配置。默认情况下,任何配置文件都默认被视为根配置。
当某个配置文件是「嵌套配置」时,它必须设置 "root": false,否则会抛出错误。
这是必需的,以便 Biome 能在命令行接口和编辑器中同时编排多个文件。
默认值:
true
plugins
要启用的 GritQL 插件 列表。每个条目可以是简单的路径字符串,也可以是带路径和可选文件过滤选项的对象。
简单路径:
{
"plugins": ["./my-plugin.grit"]
}限定到特定文件:
{
"plugins": [
{
"path": "./react-plugin.grit",
"includes": ["src/components/**", "!src/components/generated/**"]
}
]
}你可以在同一个列表中混用这两种形式。
plugins.<ITEM>.path
必填。
指向插件 .grit 文件的路径。
plugins.<ITEM>.includes
指定该插件应在哪些文件上运行的一组 glob 模式。用取反 glob(以 ! 开头)进行排除。
省略时,该插件会在 Linter 处理的每个文件上运行。如果 includes 为空 [],该插件不会在任何文件上运行。
files
files.includes
一组 glob 模式。
如果某个文件夹匹配某个 glob 模式,该文件夹内的所有文件都会被处理。
下面的例子匹配 src 文件夹内所有带 .js 扩展名的文件:
{
"files": {
"includes": ["src/**/*.js"]
}
}* 用于匹配 某个文件夹内的所有文件,而 ** 会 递归地 匹配某个文件夹内的所有文件和子文件夹。有关 glob 的更多信息,请参阅 glob 语法参考
includes 还支持取反模式,也就是例外。这些是以 ! 开头的模式,可用来指示 Biome 处理所有文件,但 排除 匹配该取反模式的文件。使用取反模式时,你应当始终以 ** 开头来匹配所有文件和文件夹,否则该取反模式不会匹配任何文件。
请注意,例外按顺序处理,因此你可以为例外再设置例外。
考虑下面的例子:
{
"files": {
"includes": ["**", "!**/*.test.js", "**/special.test.js", "!test"]
}
}这个例子说明:
- 借助
**模式,所有(子)文件夹内的所有文件都会被处理…… - …… 但当这些文件带有
.test.js扩展名时 除外 …… - …… 不过
special.test.js这个文件 仍然 会被处理…… - …… 但当它出现在名为
test的文件夹中时 除外,因为该文件夹内 没有 文件会被处理。
这意味着:
src/app.js会 被处理。src/app.test.js不会 被处理。src/special.test.js会 被处理。test/special.test.js不会 被处理。
请注意,无论 files.includes 如何设置,node_modules/ 内的文件都会被忽略。
与扫描器的交互
Biome 有一个 扫描器,负责发现嵌套配置文件以及 .gitignore 文件。如果启用了 项目域 中的一条或多条规则,它还可以索引源文件。
扫描器既遵循 files.includes,也遵循 .gitignore 文件中的忽略模式,但有两个例外需要注意:
- 像
biome.json和.gitignore这样的特殊文件,优先于files.includes中的任何忽略模式。 - 如果启用了项目域中的任何规则,扫描器会索引源文件 及其依赖。这意味着作为
files.includes一部分而被忽略的文件,仍可能被扫描器索引,只要另有被包含的文件导入了这些文件。这也意味着node_modules/内的.d.ts文件和package.json清单同样可能被索引。
在遍历文件系统时,Biome 最多跟随三层深的符号链接链。更长的链会被跳过,并产生一条警告级别的诊断信息。
如果你想显式强制扫描器忽略某些文件,可以使用所谓的 强制忽略模式。强制忽略模式看起来像普通的取反模式,但以双感叹号(!!)开头。
例如,你可以用以下配置告诉 Biome 永远不查看任何 dist/ 文件夹:
{
"files": {
"includes": ["**", "!!**/dist"]
}
}我们建议对包含 输出 文件的任何文件夹(如 build/ 和 dist/)使用强制忽略语法。对于这类文件夹,索引几乎不可能带来什么好处。对于包含生成文件的文件夹,我们建议使用普通的忽略模式,以便仍能从这些文件中提取类型信息。
对于嵌套的 biome.json 文件以及你希望显式忽略的 .gitignore 文件,同样必须使用强制忽略语法。
files.ignoreUnknown
如果为 true,Biome 遇到它无法处理的文件时不会发出诊断信息。
{
"files": {
"ignoreUnknown": true
}
}默认值:
false
files.maxSize
源代码文件允许的最大大小,以字节计。超过此限制的文件会因性能原因被忽略。
默认值:
1048576(1024*1024, 1MB)
files.experimentalScannerIgnores
一个由字面路径段组成的数组,扫描器在遍历过程中会忽略这些路径。被忽略的文件不会被索引,这意味着这些文件不会出现在模块图中,也不会从中推断出类型。
vcs
一组用于将 Biome 与 VCS(版本控制软件)集成的属性。
vcs.enabled
Biome 是否应当与 VCS 客户端集成。
默认值:
false
vcs.clientKind
客户端的类型。
取值:
"git"
vcs.useIgnoreFile
Biome 是否应使用项目的 VCS 忽略文件。当为 true 时,Biome 会忽略 VCS 忽略文件中指定的文件、Git 的本地 exclude 文件以及 .ignore 文件。
此功能也支持嵌套的忽略文件。
根忽略文件产生的语义与根 files.includes 相同。
vcs.root
Biome 应在其中检查 VCS 文件的文件夹。默认情况下,Biome 会使用找到 biome.json 的同一文件夹。
如果你的配置文件不在 VCS 仓库的根目录,你应当在此指定到 VCS 根的路径。该路径必须相对于配置文件。这可确保 Biome 能正确找到并遵循你的 VCS 忽略文件。
例如,如果你的 Biome 配置位于 frontend/biome.json,而你的 VCS 根在项目根目录,你应当像这样配置 vcs.root:
{
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true,
"root": "../"
}
}如果 Biome 找不到该配置,它会尝试使用当前工作目录。如果连当前工作目录也找不到,Biome 就不会使用 VCS 集成,并发出一条诊断信息。
vcs.defaultBranch
项目的主分支。Biome 在评估发生更改的文件时会使用该分支。
linter
linter.enabled
启用 Biome 的 Linter。
默认值:
true
linter.includes
要 Lint 的文件的一组 glob 模式。
下面的例子会 Lint src 文件夹内所有带 .js 扩展名的文件:
{
"linter": {
"includes": ["src/**/*.js"]
}
}* 用于匹配 某个文件夹内的所有文件,而 ** 会 递归地 匹配某个文件夹内的所有文件和子文件夹。有关 glob 的更多信息,请参阅 glob 语法参考
includes 还支持取反模式,也就是例外。这些是以 ! 开头的模式,可用来指示 Biome 处理所有文件,但 排除 匹配该取反模式的文件。
请注意,例外按顺序处理,因此你可以为例外再设置例外。
考虑下面的例子:
{
"linter": {
"includes": ["**", "!**/*.test.js", "**/special.test.js"]
}
}这个例子说明:
- 借助
**模式,所有(子)文件夹内的所有文件都会被 Lint…… - …… 但当这些文件带有
.test.js扩展名时 除外 …… - …… 不过
special.test.ts这个文件 仍然 会被 Lint。
这意味着:
src/app.js会 被 Lint。src/app.test.js不会 被 Lint。src/special.test.js*会 被 Lint。
请注意,linter.includes 是在 files.includes 之后 应用的。这意味着任何未被 files.includes 匹配的文件,都无法再被 linter.includes 匹配。所以下面这个例子 不起作用:
{
"files": {
"includes": "src/**"
},
"linter": {
// 这不会匹配任何文件,因为它与 `files.includes` 没有重叠:
"includes": "scripts/**"
}
}如果没有指定 linter.includes,所有被 files.includes 匹配的文件都会被 Lint。
linter.rules.recommended
为所有分组启用推荐规则。
默认值:
true
linter.rules.preset
它允许启用某一组特定的规则。它接受以下值:
"recommended":启用 Biome 的推荐规则(默认)"all":启用所有 Lint 规则,但 nursery 规则除外。"none":禁用所有 Lint 规则。
linter.rules.[group]
影响单个分组规则的选项。Biome 支持以下分组:
- a11y: 专注于预防无障碍访问问题的规则。
- complexity: 专注于检查可被简化的复杂代码的规则。
- correctness: 检测保证有误或无用的代码的规则。
- nursery: 仍在开发中的新规则。在稳定版本中,nursery 规则需要通过配置显式选择启用,因为它们可能仍存在 bug 或性能问题(即使它们被标记为推荐)。在 nightly 构建中它们默认启用,但由于尚不稳定,其诊断严重性可能被设置为 error 或 warning,具体取决于我们在该规则最终稳定时是否打算将其设为推荐。nursery 规则在稳定后会被提升为其他分组,也可能被移除。属于此分组的规则不受语义化版本约束。
- performance: 发现可以让代码运行更快或总体更高效的写法的规则。
- security: 检测潜在安全缺陷的规则。
- style: 强制以一种一致且符合惯用方式编写代码的规则。
- suspicious: 检测很可能有误或无用的代码的规则。
每个分组可以接受一个表示严重性的字符串,或一个可逐条配置规则的对象作为值。
传入严重性时,你可以控制属于某个分组的所有规则所发出的严重性。
例如,你可以将 a11y 分组配置为发出 information 级别的诊断信息:
{
"linter": {
"rules": {
"a11y": "info"
}
}
}以下是接受的值:
"on":属于该分组的每条规则都会以该规则的默认严重性发出一条诊断信息。请参阅该规则的文档,或使用explain命令:biome explain noDebugger"off":属于该分组的规则都不会发出任何诊断信息。"info":属于该分组的所有规则都会发出 information 严重性的诊断信息。"warn":属于该分组的所有规则都会发出 warning 严重性的诊断信息。"error":属于该分组的所有规则都会发出 error 严重性的诊断信息。
linter.rules.[group].recommended
为单个分组启用推荐规则。
示例:
{
"linter": {
"enabled": true,
"rules": {
"nursery": {
"recommended": true
}
}
}
}assist
assist.enabled
启用 Biome 的 Assist。
默认值:
true
assist.includes
要 Lint 的文件的一组 glob 模式。
下面的例子会分析 src 文件夹内所有带 .js 扩展名的文件:
{
"assist": {
"includes": ["src/**/*.js"]
}
}* 用于匹配 某个文件夹内的所有文件,而 ** 会 递归地 匹配某个文件夹内的所有文件和子文件夹。有关 glob 的更多信息,请参阅 glob 语法参考
includes 还支持取反模式,也就是例外。这些是以 ! 开头的模式,可用来指示 Biome 处理所有文件,但 排除 匹配该取反模式的文件。
请注意,例外按顺序处理,因此你可以为例外再设置例外。
考虑下面的例子:
{
"assist": {
"includes": ["**", "!**/*.test.js", "**/special.test.js"]
}
}这个例子说明:
- 借助
**模式,所有(子)文件夹内的所有文件都会被分析…… - …… 但当这些文件带有
.test.js扩展名时 除外 …… - …… 不过
special.test.ts这个文件 仍然 会被分析。
这意味着:
src/app.js会 被分析。src/app.test.js不会 被分析。src/special.test.js*会 被分析。
请注意,assist.includes 是在 files.includes 之后 应用的。这意味着任何未被 files.includes 匹配的文件,都无法再被 assist.includes 匹配。所以下面这个例子 不起作用:
{
"files": {
"includes": "src/**"
},
"assist": {
// 这不会匹配任何文件,因为它与 `files.includes` 没有重叠:
"includes": "scripts/**"
}
}如果没有指定 assist.includes,所有被 files.includes 匹配的文件都会被 Lint。
assist.actions.recommended
为所有分组启用推荐操作。
assist.actions.[group]
影响单个分组规则的选项。Biome 支持以下分组:
- source: 该分组表示那些在保存时可安全应用到文档的操作。这些操作通常都是安全的,一般不会改变程序的功能。
assist.actions.[group].recommended
为单个分组启用推荐规则。
示例:
{
"assist": {
"enabled": true,
"actions": {
"source": {
"recommended": true
}
}
}
}formatter
这些选项适用于所有语言。下面还有针对各语言的格式化选项。
formatter.enabled
启用 Biome 的格式化器。
默认值:
true
formatter.includes
要格式化的文件的一组 glob 模式。
下面的例子会格式化 src 文件夹内所有带 .js 扩展名的文件:
{
"formatter": {
"includes": ["src/**/*.js"]
}
}* 用于匹配 某个文件夹内的所有文件,而 ** 会 递归地 匹配某个文件夹内的所有文件和子文件夹。有关 glob 的更多信息,请参阅 glob 语法参考
includes 还支持取反模式,也就是例外。这些是以 ! 开头的模式,可用来指示 Biome 处理所有文件,但 排除 匹配该取反模式的文件。
请注意,例外按顺序处理,因此你可以为例外再设置例外。
考虑下面的例子:
{
"formatter": {
"includes": ["**", "!**/*.test.js", "**/special.test.js"]
}
}这个例子说明:
- 借助
**模式,所有(子)文件夹内的所有文件都会被格式化…… - …… 但当这些文件带有
.test.js扩展名时 除外 …… - …… 不过
special.test.ts这个文件 仍然 会被格式化。
这意味着:
src/app.js会 被格式化。src/app.test.js不会 被格式化。src/special.test.js会 被格式化。
请注意,formatter.includes 是在 files.includes 之后 应用的。这意味着任何未被 files.includes 匹配的文件,都无法再被 formatter.includes 匹配。所以下面这个例子 不起作用:
{
"files": {
"includes": "src/**"
},
"formatter": {
// 这不会匹配任何文件,因为它与 `files.includes` 没有重叠:
"includes": "scripts/**"
}
}如果没有指定 formatter.includes,所有被 files.includes 匹配的文件都会被格式化。
formatter.formatWithErrors
允许格式化带有语法错误的文档。
{
"formatter": {
"formatWithErrors": true
}
}默认值:
false
formatter.indentStyle
缩进的风格。可以是 "tab" 或 "space"。
默认值:
"tab"
formatter.indentWidth
缩进应当有多大。
默认值:
2
formatter.lineEnding
行尾的类型。
"lf",仅换行符 Line Feed(\n),在 Linux、macOS 以及 git 仓库中常见;"crlf",回车符加换行符(\r\n),在 Windows 上常见;"cr",仅回车符(\r),极少使用。"auto",匹配操作系统的预期行尾风格:在 Windows 上为 CRLF(\r\n),在 macOS/Linux 上为 LF(\n)。
默认值:
"lf"
formatter.lineWidth
单行上可以书写的字符数。
默认值:
80
formatter.attributePosition
类 HTML 语言中的属性位置风格。
"auto",属性会被自动格式化,只有当它们满足某些条件时才会折成多行;"multiline",如果使用了多于 1 个属性,属性会折成多行。
默认值:
"auto"
formatter.bracketSpacing
选择在括号与内部值之间是否添加空格。
默认值:
true
formatter.delimiterSpacing
是否在分隔符内部插入空格(在起始分隔符之后、结束分隔符之前)。空的分隔符不受影响,且不会在起始分隔符之前添加空格。
默认值:
false
formatter.expand
是否将数组和对象展开到多行。
"auto",如果第一个属性带有换行,则对象字面量被格式化到多行;如果数组字面量能放进一行,则被格式化到单行。"always",这些字面量被格式化到多行,不论列表有多长。"never",如果这些字面量能放进一行,则被格式化到单行。
格式化 package.json 时,除非另有配置,Biome 会使用 always。
默认值:
"auto"
formatter.trailingNewline
是否在文件末尾添加一个结尾换行。
默认值为 true。
formatter.useEditorconfig
Biome 是否应使用 .editorconfig 文件来确定格式化选项。
配置文件 .editorconfig 和 biome.json 会遵循以下规则:
biome.json中的格式化设置始终优先于.editorconfig文件。- 位于
biome.json文件所在层级之上的.editorconfig文件已被忽略。这是为了避免把某人主目录中的格式化设置加载到带有biome.json文件的项目中。 - 目前不支持嵌套的
.editorconfig文件。
默认值:
false
javascript
这些选项仅适用于 JavaScript(以及 TypeScript)文件。
javascript.parser.unsafeParameterDecoratorsEnabled
允许支持不安全/实验性的参数装饰器。
{
"javascript": {
"parser": {
"unsafeParameterDecoratorsEnabled": true
}
}
}默认值:
false
javascript.parser.jsxEverywhere
设置为 true 时,允许解析 .js 文件内的 JSX 语法。设置为 false 时,Biome 遇到 .js 文件内的 JSX 语法会抛出诊断信息。
默认值:
true
{
"javascript": {
"parser": {
"jsxEverywhere": false
}
}
}javascript.formatter.quoteStyle
表示字符串字面量时所使用的引号类型。可以是 "single" 或 "double"。
默认值:
"double"
{
"javascript": {
"formatter": {
"quoteStyle": "single"
}
}
}javascript.formatter.jsxQuoteStyle
表示 jsx 字符串字面量时所使用的引号类型。可以是 "single" 或 "double"。
默认值:
"double"
{
"javascript": {
"formatter": {
"jsxQuoteStyle": "single"
}
}
}javascript.formatter.quoteProperties
对象内的属性在何时应被加引号。可以是 "asNeeded" 或 "preserve"。
默认值:
"asNeeded"
{
"javascript": {
"formatter": {
"quoteProperties": "preserve"
}
}
}javascript.formatter.trailingCommas
在多行的逗号分隔语法结构中,凡是可能之处都打印结尾逗号。可能的取值:
"all",始终添加结尾逗号;"es5",仅在旧版 JavaScript 支持的地方添加结尾逗号;"none",从不添加结尾逗号。
默认值:
"all"
javascript.formatter.semicolons
它配置格式化器在何处打印分号:
"always",始终在每条语句末尾添加分号;"asNeeded",仅在需要之处添加分号,以防 ASI。
默认值:
"always"
示例:
{
"javascript": {
"formatter": {
"semicolons": "asNeeded"
}
}
}javascript.formatter.arrowParentheses
是否为箭头函数添加非必需的括号:
"always",始终添加括号;"asNeeded",仅在需要时添加括号。
默认值:
"always"
javascript.formatter.enabled
为 JavaScript(及其超语言)文件启用 Biome 的格式化器。
默认值:
true
javascript.formatter.indentStyle
JavaScript(及其超语言)文件的缩进风格。可以是 "tab" 或 "space"。
默认值:
"tab"
javascript.formatter.indentWidth
JavaScript(及其超语言)文件的缩进应当有多大。
默认值:
2
javascript.formatter.lineEnding
JavaScript(及其超语言)文件的行尾类型。
"lf",仅换行符 Line Feed(\n),在 Linux、macOS 以及 git 仓库中常见;"crlf",回车符加换行符(\r\n),在 Windows 上常见;"cr",仅回车符(\r),极少使用。"auto",匹配操作系统的预期行尾风格:在 Windows 上为 CRLF(\r\n),在 macOS/Linux 上为 LF(\n)。
默认值:
"lf"
javascript.formatter.lineWidth
在 JavaScript(及其超语言)文件中,单行上可以书写的字符数。
默认值:
80
javascript.formatter.bracketSameLine
选择多行 JSX 元素结尾的 > 是否应放在最后一个属性所在的那一行
默认值:
false
javascript.formatter.bracketSpacing
选择在括号与内部值之间是否添加空格。
默认值:
true
javascript.formatter.delimiterSpacing
是否在分隔符内部插入空格(在起始分隔符之后、结束分隔符之前)。空的分隔符不受影响,且不会在起始分隔符之前添加空格。
对于 JavaScript,它影响圆括号(例如 foo( a, b ))、方括号(例如 [ a, b ])、模板字面量插值(例如 ${ expr })、TypeScript 尖括号(例如 foo< T >())、JSX 表达式大括号(例如 { value }),以及逻辑非运算符(例如 ! x)。
默认值:
false
javascript.formatter.attributePosition
jsx 元素中的属性位置风格。
"auto",不强制每行一个属性。"multiline",强制每行一个属性。
默认值:
"auto"
javascript.formatter.expand
是否将数组和对象展开到多行。
"auto",如果第一个属性带有换行,则对象字面量被格式化到多行;如果数组字面量能放进一行,则被格式化到单行。"always",这些字面量被格式化到多行,不论列表有多长。"never",如果这些字面量能放进一行,则被格式化到单行。
默认值:
"auto"
javascript.formatter.operatorLinebreak
在把二元表达式折成多行时,是在二元运算符之前还是之后折行。
默认值:
"after"。
"after:运算符放在表达式之后:
if (
expressionOne &&
expressionTwo &&
expressionThree &&
expressionFour
) {}"before:运算符放在表达式之前:
if (
expressionOne
&& expressionTwo
&& expressionThree
&& expressionFour
) {}javascript.formatter.trailingNewline
是否在文件末尾添加一个结尾换行。
默认值为 true。
javascript.globals
Biome 应当忽略的全局名称列表(分析器、Linter 等)
{
"javascript": {
"globals": ["$", "_", "externalVariable"]
}
}javascript.jsxRuntime
指明用于解释 JSX 的运行时或转换的类型。
"transparent":表示现代或原生的 JSX 环境,不需要 Biome 做特殊处理。"reactClassic":表示需要React导入的经典 React 环境。对应 TypeScript 的tsconfig.json中jsx选项的react值。
{
"javascript": {
"jsxRuntime": "reactClassic"
}
}有关旧版与新版 JSX 运行时的更多信息,请参阅: https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html
默认值:
"transparent"
javascript.resolver.experimentalPnpmCatalogs
启用对从默认目录和命名 pnpm 目录解析依赖的支持。
启用后,Biome 在解析包依赖时可以使用 pnpm-workspace.yaml 中的 catalog 和 catalogs 条目。
默认值:
false
javascript.linter.enabled
为 JavaScript(及其超语言)文件启用 Biome 的 Linter。
默认值:
true
{
"javascript": {
"linter": {
"enabled": false
}
}
}javascript.assist.enabled
为 JavaScript(及其超语言)文件启用 Biome 的 Assist。
默认值:
true
{
"javascript": {
"assist": {
"enabled": false
}
}
}javascript.experimentalEmbeddedSnippetsEnabled
启用在 JavaScript(及其超语言)文件中解析和格式化嵌入的语言片段。
默认值:
false
{
"javascript": {
"experimentalEmbeddedSnippetsEnabled": true
}
}json
应用于 JSON 文件的选项。
json.parser.allowComments
启用对 JSON 文件中注释的解析。
{
"json": {
"parser": {
"allowComments": true
}
}
}json.parser.allowTrailingCommas
启用对 JSON 文件中结尾逗号的解析。
{
"json": {
"parser": {
"allowTrailingCommas": true
}
}
}json.formatter.enabled
为 JSON(及其超语言)文件启用 Biome 的格式化器。
默认值:
true
{
"json": {
"formatter": {
"enabled": false
}
}
}json.formatter.indentStyle
JSON(及其超语言)文件的缩进风格。可以是 "tab" 或 "space"。
默认值:
"tab"
json.formatter.indentWidth
JSON(及其超语言)文件的缩进应当有多大。
默认值:
2
json.formatter.lineEnding
JSON(及其超语言)文件的行尾类型。
"lf",仅换行符 Line Feed(\n),在 Linux、macOS 以及 git 仓库中常见;"crlf",回车符加换行符(\r\n),在 Windows 上常见;"cr",仅回车符(\r),极少使用。"auto",匹配操作系统的预期行尾风格:在 Windows 上为 CRLF(\r\n),在 macOS/Linux 上为 LF(\n)。
默认值:
"lf"
json.formatter.lineWidth
在 JSON(及其超语言)文件中,单行上可以书写的字符数。
默认值:
80
json.formatter.trailingCommas
在多行的逗号分隔语法结构中,凡是可能之处都打印结尾逗号。
允许的取值:
"none":移除结尾逗号;"all":保留 结尾逗号并优先使用它。
默认值:
"none"
json.formatter.bracketSpacing
选择在括号与内部值之间是否添加空格。
默认值:
true
json.formatter.delimiterSpacing
是否在分隔符内部插入空格(在起始分隔符之后、结束分隔符之前)。空的分隔符不受影响,且不会在起始分隔符之前添加空格。对于 JSON,它影响方括号(例如 [ 1, 2, 3 ])。
默认值:
false
json.formatter.expand
是否将数组和对象展开到多行。
"auto",如果第一个属性带有换行,则对象字面量被格式化到多行;如果数组字面量能放进一行,则被格式化到单行。"always",这些字面量被格式化到多行,不论列表有多长。"never",如果这些字面量能放进一行,则被格式化到单行。
格式化 package.json 时,除非另有配置,Biome 会使用 always。
默认值:
"auto"
json.formatter.trailingNewline
是否在文件末尾添加一个结尾换行。
默认值为 true。
json.linter.enabled
为 JSON(及其超语言)文件启用 Biome 的格式化器。
默认值:
true
{
"json": {
"linter": {
"enabled": false
}
}
}json.assist.enabled
为 JSON(及其超语言)文件启用 Biome 的 Assist。
默认值:
true
{
"json": {
"assist": {
"enabled": false
}
}
}css
应用于 CSS 文件的选项。
css.parser.cssModules
启用对 CSS modules 的解析。
默认值:
false
css.parser.tailwindDirectives
启用对 Tailwind 专有语法的解析,例如 @theme、@utility 和 @apply。
默认值:
false
css.formatter.enabled
为 CSS 文件启用 Biome 的格式化器。
默认值:
false
{
"css": {
"formatter": {
"enabled": false
}
}
}css.formatter.indentStyle
CSS 文件的缩进风格。可以设为 "tab" 或 "space"。
默认值:
"tab"
css.formatter.indentWidth
CSS 文件的缩进宽度。
默认值:
2
{
"css": {
"formatter": {
"indentWidth": 2
}
}
}css.formatter.lineEnding
CSS 文件的换行类型。
"lf",仅换行符(\n),常见于 Linux、macOS 以及 git 仓库内部;"crlf",回车符 + 换行符(\r\n),常见于 Windows;"cr",仅回车符(\r),极少使用;"auto",匹配操作系统期望的换行风格:Windows 上使用 CRLF(\r\n),macOS/Linux 上使用 LF(\n)。
默认值:
"lf"
css.formatter.lineWidth
CSS 文件单行可以书写的字符数。
默认值:
80
css.formatter.quoteStyle
表示字符串字面量时使用的引号类型。可以设为 "single" 或 "double"。
默认值:
"double"
css.formatter.delimiterSpacing
是否在定界符内部插入空格(起始定界符之后、闭合定界符之前)。空定界符不受影响,起始定界符之前也不会添加空格。对于 CSS,影响圆括号(例如 rgb( 0, 0, 0 ))和方括号(例如 [ data-attr ])。
默认值:
false
css.formatter.trailingNewline
是否在文件末尾添加尾部换行符。
默认为 true。
css.linter.enabled
为 CSS 文件启用 Biome 的 Linter。
默认值:
true
{
"css": {
"linter": {
"enabled": false
}
}
}css.assist.enabled
为 CSS 文件启用 Biome 的 Assist 辅助操作。
默认值:
true
{
"css": {
"assist": {
"enabled": false
}
}
}graphql
应用于 GraphQL 文件的选项。
graphql.formatter.enabled
为 GraphQL 文件启用 Biome 的格式化器。
默认值:
false
graphql.formatter.indentStyle
GraphQL 文件的缩进风格。可以设为 "tab" 或 "space"。
默认值:
"tab"
graphql.formatter.indentWidth
GraphQL 文件的缩进宽度。
默认值:
2
graphql.formatter.lineEnding
GraphQL 文件的换行类型。
"lf",仅换行符(\n),常见于 Linux、macOS 以及 git 仓库内部;"crlf",回车符 + 换行符(\r\n),常见于 Windows;"cr",仅回车符(\r),极少使用;"auto",匹配操作系统期望的换行风格:Windows 上使用 CRLF(\r\n),macOS/Linux 上使用 LF(\n)。
默认值:
"lf"
graphql.formatter.lineWidth
GraphQL 文件单行可以书写的字符数。
默认值:
80
graphql.formatter.quoteStyle
表示字符串字面量时使用的引号类型。可以设为 "single" 或 "double"。
默认值:
"double"
graphql.formatter.trailingNewline
是否在文件末尾添加尾部换行符。
默认为 true。
graphql.linter.enabled
为 GraphQL 文件启用 Biome 的 Linter。
默认值:
true
graphql.assist.enabled
为 GraphQL 文件启用 Biome 的 Assist 辅助操作。
默认值:
true
grit
应用于 Grit 文件的选项。
grit.formatter.enabled
为 Grit 文件启用 Biome 的格式化器。
默认值:
false
grit.formatter.indentStyle
Grit 文件的缩进风格。可以设为 "tab" 或 "space"。
默认值:
"tab"
grit.formatter.indentWidth
Grit 文件的缩进宽度。
默认值:
2
grit.formatter.lineEnding
Grit 文件的换行类型。
"lf",仅换行符(\n),常见于 Linux、macOS 以及 git 仓库内部;"crlf",回车符 + 换行符(\r\n),常见于 Windows;"cr",仅回车符(\r),极少使用;"auto",匹配操作系统期望的换行风格:Windows 上使用 CRLF(\r\n),macOS/Linux 上使用 LF(\n)。
默认值:
"lf"
grit.formatter.lineWidth
Grit 文件单行可以书写的字符数。
默认值:
80
grit.formatter.quoteStyle
表示字符串字面量时使用的引号类型。可以设为 "single" 或 "double"。
默认值:
"double"
grit.formatter.trailingNewline
是否在文件末尾添加尾部换行符。
默认为 true。
grit.linter.enabled
为 Grit 文件启用 Biome 的 Linter。
默认值:
true
{
"grit": {
"linter": {
"enabled": false
}
}
}grit.assist.enabled
为 Grit 文件启用 Biome 的 Assist 辅助操作。
默认值:
true
{
"grit": {
"assist": {
"enabled": false
}
}
}html
html.experimentalFullSupportEnabled
启用后,Biome 将对类 HTML 语言(Vue、Svelte 和 Astro 文件)提供完整支持,这些文件中嵌入式语言的解析、格式化和 Lint 行为保持一致。
禁用后,Biome 只会从这些文件中提取 JavaScript/TypeScript 部分进行分析,忽略其余内容。
html.parser.interpolation
启用对 .html 文件中双花括号文本表达式(如 {{ expression }})的解析。
默认值:
false
html.parser.vue
启用 .html 文件内 Vue 专有语法的解析。由于插值语法是 Vue 语法的核心组成部分,启用此选项也会隐式启用 html.parser.interpolation。
Biome 已能自动识别 .vue 文件,因此除非你的项目使用 .html 文件承载 Vue 组件,否则你可能无需启用此选项。
默认值:
false
html.formatter.enabled
为 HTML 文件启用 Biome 的格式化器。
默认值:
false
html.formatter.indentStyle
HTML 文件的缩进风格。可以设为 "tab" 或 "space"。
默认值:
"tab"
html.formatter.indentWidth
HTML 文件的缩进宽度。
默认值:
2
html.formatter.lineEnding
HTML 文件的换行类型。
"lf",仅换行符(\n),常见于 Linux、macOS 以及 git 仓库内部;"crlf",回车符 + 换行符(\r\n),常见于 Windows;"cr",仅回车符(\r),极少使用;"auto",匹配操作系统期望的换行风格:Windows 上使用 CRLF(\r\n),macOS/Linux 上使用 LF(\n)。
默认值:
"lf"
html.formatter.lineWidth
HTML 文件单行可以书写的字符数。
默认值:
80
html.formatter.attributePosition
HTML 元素中属性的排布风格。
"auto",属性自动格式化,仅在满足特定条件时才会拆分为多行;"multiline",若使用了超过 1 个属性,属性将拆分为多行。
默认值:
"auto"
html.formatter.bracketSameLine
多行 HTML 标签的闭合右括号是否紧贴在最后一行的行尾,而不是单独占据下一行。
默认值:
false
html.formatter.whitespaceSensitivity
格式化 HTML(及其超集语言)时,是否考虑空白的敏感性。
默认值:"css"
-
"css":对于在浏览器用户代理样式表中默认显示样式为 "inline" 的元素,格式化器认为其空白是有意义的。 -
"strict":对所有元素而言,内容首尾的空白都被视为有意义。若存在空白,格式化器至少应保留一个空白字符。 否则,若不存在空白,则不应在
>之后或<之前添加任何空白。换句话说,若没有空白,文本内容应紧贴标签。文本紧贴标签的示例:
<b >content</b > -
"ignore":空白被视为无意义。格式化器可以自行决定删除或添加空白。
html.formatter.indentScriptAndStyle
自 2.3 起:仅影响 .vue 和 .svelte 文件
是否对 Vue 和 Svelte 文件中 <script> 与 <style> 标签的内容进行缩进。目前不适用于普通 HTML 文件。
默认值:
false
设为 true 时,<script> 和 <style> 标签的内容将相对标签缩进一级。
<script>
import Bar from "./Bar.vue";
</script>html.formatter.selfCloseVoidElements
空元素是否应采用自闭合写法。默认为 never。
默认值:
"never"
"never":格式化器会移除空元素中的斜杠/。"always":始终在空元素中添加斜杠/。
html.formatter.trailingNewline
是否在文件末尾添加尾部换行符。
默认为 true。
html.linter.enabled
为 HTML 文件启用 Biome 的 Linter。
默认值:
true
html.assist.enabled
为 HTML 文件启用 Biome 的 Assist 辅助操作。
默认值:
true
overrides
一个模式列表。
使用该配置可以针对特定文件更改工具的行为。
当某个文件匹配到某个 override 模式时,该模式中指定的配置将覆盖顶层配置。
模式的顺序很重要。如果一个文件可以匹配三个模式,只会使用第一个。
overrides.<ITEM>.includes
用于应用自定义设置的文件所对应的 glob 模式 列表。
{
"overrides": [{
"includes": ["scripts/*.js"],
// 仅应用于 includes 字段所指定文件的设置。
}]
}overrides.<ITEM>.formatter
包含顶层 formatter配置的选项,但不含 ignore 和 include。
示例
例如,可以为 glob 路径 generated/** 匹配的文件修改格式化器的 lineWidth、indentStyle:
{
"formatter": {
"lineWidth": 100
},
"overrides": [
{
"includes": ["generated/**"],
"formatter": {
"lineWidth": 160,
"indentStyle": "space"
}
}
]
}overrides.<ITEM>.linter
包含顶层 linter配置的选项,但不含 ignore 和 include。
示例
你可以对特定 glob 路径禁用某些规则,并对其他 glob 路径禁用 Linter:
{
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"overrides": [
{
"includes": ["lib/**"],
"linter": {
"rules": {
"suspicious": {
"noDebugger": "off"
}
}
}
},
{
"includes": ["shims/**"],
"linter": {
"enabled": false
}
}
]
}overrides.<ITEM>.javascript
包含顶层 javascript配置的选项。允许你针对特定文件覆盖 JavaScript 专属设置。
示例
你可以更改特定文件夹中 JavaScript 文件的格式化行为:
{
"formatter": {
"lineWidth": 120
},
"javascript": {
"formatter": {
"quoteStyle": "single"
}
},
"overrides": [
{
"includes": ["lib/**"],
"javascript": {
"formatter": {
"quoteStyle": "double"
}
}
}
]
}overrides.<ITEM>.json
包含顶层 json配置的选项。允许你针对特定文件覆盖 JSON 专属设置。
示例
你可以为特定 JSON 文件启用解析特性:
{
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"overrides": [
{
"includes": [".vscode/**"],
"json": {
"parser": {
"allowComments": true,
"allowTrailingCommas": true
}
}
}
]
}overrides.<ITEM>.[language]
包含顶层语言配置的选项。允许你针对特定文件覆盖语言专属设置。
Glob 语法参考
glob 模式用于匹配文件和文件夹的路径。Biome 在 glob 中支持以下语法:
*匹配零个或多个字符。它不能匹配路径分隔符/。**递归匹配目录和文件。该序列必须作为完整的路径组件使用, 因此**a和b**都无效,会导致报错。连续超过两个*字符的序列 同样无效。[...]匹配方括号内的任意字符。 也可以按 Unicode 顺序指定字符范围,例如[0-9]表示 0 到 9(含两端)之间的任意字符。[!...]是[...]的取反,即匹配不在方括号内的任意字符。- 如果整个 glob 以
!开头,则为所谓的否定模式。仅当路径 不 匹配该 glob 时, 它才会命中。否定模式不能单独使用,只能作为常规 glob 的 例外。 - 判断文件是否被包含时,Biome 也会考虑其父文件夹。这意味着,如果你想
包含 某个文件夹中的所有文件,需要使用
/**后缀来匹配这些文件。但如果想 忽略 某个文件夹中的所有文件,则无需/**后缀。我们建议忽略文件夹时 不带尾部的/**,以避免不必要的遍历, 也避免 Biome 从被忽略的文件夹中加载biome.json或.gitignore文件的风险。
一些示例:
dist/**匹配dist/文件夹及其内部的所有文件。!dist忽略dist/文件夹及其内部的所有文件。**/test/**匹配任意名为test的文件夹下的所有文件,无论其位于何处。 例如dist/test、src/test。**/*.js匹配所有文件夹中以.js扩展名结尾的文件。