Configuration
$schema
Section titled $schemaAllows to pass a path to a JSON schema file.
We publish a JSON schema file for the biome.json
.
You can specify a relative path to the schema of the @biomejs/biome
npm package if @biomejs/biome
is installed in the node_modules
folder:
{ "$schema": "./node_modules/@biomejs/biome/configuration_schema.json"}
If you have problems with resolving the physical file, you can use the one published in this site:
{ "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json"}
extends
Section titled extendsA list of paths to other JSON files. Biome resolves and applies the options of the files contained in the extends
list, and eventually applies the options contained in the biome.json
file.
files
Section titled filesfiles.maxSize
Section titled files.maxSizeThe maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons.
Default: 1024*1024 (1MB)
files.ignore
Section titled files.ignoreA list of Unix shell style patterns. Biome ignores files and folders that match these patterns.
{ "files": { "ignore": ["scripts/*.js"] }}
files.include
Section titled files.includeA list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "files": { "include": ["scripts/*.js"] }}
Given the following example:
{ "files": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the pattern src/**/*.js
will be handled, while the files that match the pattern
scripts/**/*.js
will be ignored.
files.ignoreUnknown
Section titled files.ignoreUnknownBiome won’t emit diagnostics if it encounters files that can’t handle.
{ "files": { "ignoreUnknown": true }}
Default: false
Set of properties to integrate Biome with a VCS software.
vcs.enabled
Section titled vcs.enabledWhether Biome should integrate itself with the VCS client
Default: false
vcs.clientKind
Section titled vcs.clientKindThe kind of client.
Values:
"git"
vcs.useIgnoreFile
Section titled vcs.useIgnoreFileWhether Biome should use the VCS ignore file. When true
, Biome will ignore the files
specified in the ignore file.
vcs.root
Section titled vcs.rootThe folder where Biome should check for VCS files. By default, Biome will use the same
folder where biome.json
was found.
If Biome can’t find the configuration, it will attempt to use the current working directory. If no current working directory can’t be found, Biome won’t use the VCS integration, and a diagnostic will be emitted
vcs.defaultBranch
Section titled vcs.defaultBranchThe main branch of the project. Biome will use this branch when evaluating the changed files.
linter
Section titled linterlinter.enabled
Section titled linter.enabledEnables Biome’s linter
Default:
true
linter.ignore
Section titled linter.ignoreAn array of Unix shell style patterns.
{ "linter": { "ignore": ["scripts/*.js"] }}
linter.include
Section titled linter.includeA list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "linter": { "include": ["scripts/*.js"] }}
Given the following example:
{ "linter": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the patter src/**/*.js
will be linted, while the files that match the pattern
scripts/**/*.js
will be ignored.
linter.rules.recommended
Section titled linter.rules.recommendedEnables the recommended rules for all groups.
Default:
true
linter.rules.all
Section titled linter.rules.allEnable or disable all rules for all groups.
If recommended
and all
are both true
, Biome will emit a diagnostic and fallback to its defaults.
{ "linter": { "enabled": true, "rules": { "all": true } }}
It’s also possible to combine this flag to enable/disable different rule groups:
{ "linter": { "enabled": true, "rules": { "all": true, "style": { "all": false }, "complexity": { "all": false } } }}
In the previous example, Biome will enable all rules, exception for rules that belong to the style
and complexity
groups.
linter.rules.[group]
Section titled linter.rules.[group]Options that influence the rules of a single group. Biome supports the following groups:
accessibility
: Rules focused on preventing accessibility problems.complexity
: Rules that focus on inspecting complex code that could be simplified.correctness
: Rules that detect code that is guaranteed to be incorrect or useless.performance
: Rules catching ways your code could be written to run faster, or generally be more efficient.security
: Rules that detect potential security flaws.style
: Rules enforcing a consistent and idiomatic way of writing your code.suspicious
: Rules that detect code that is likely to be incorrect or useless.nursery
: New rules that are still under development. Nursery rules require explicit opt-in via configuration on stable versions because they may still have bugs or performance problems. They are enabled by default on nightly builds, but as they are unstable their diagnostic severity may be set to either error or warning, depending on whether we intend for the rule to be recommended or not when it eventually gets stabilized. Nursery rules get promoted to other groups once they become stable or may be removed. Rules that belong to this group are not subject to semantic version.linter.rules.[group].recommended
Section titled linter.rules.[group].recommendedEnables the recommended rules for a single group.
Example:
{ "linter": { "enabled": true, "rules": { "nursery": { "recommended": true } } }}
linter.rules.[group].all
Section titled linter.rules.[group].allEnables all rules for a single group.
Example:
{ "linter": { "enabled": true, "rules": { "nursery": { "all": true } } }}
formatter
Section titled formatterThese options apply to all languages. There are additional language-specific formatting options below.
formatter.enabled
Section titled formatter.enabledEnables Biome’s formatter
Default:
true
formatter.ignore
Section titled formatter.ignoreAn array of Unix shell style patterns.
{ "formatter": { "ignore": ["scripts/*.js"] }}
formatter.include
Section titled formatter.includeA list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "formatter": { "include": ["scripts/*.js"] }}
Given the following example:
{ "formatter": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the patter src/**/*.js
will be formatted, while the files that match the pattern
scripts/**/*.js
will be ignored.
formatter.formatWithErrors
Section titled formatter.formatWithErrorsAllows to format a document that has syntax errors.
{ "formatter": { "formatWithErrors": true }}
Default:
false
formatter.indentStyle
Section titled formatter.indentStyleThe style of the indentation. It can be "tab"
or "space"
.
Default:
tab
formatter.indentSize
Section titled formatter.indentSizeHow big the indentation should be.
Default:
2
formatter.indentWidth
Section titled formatter.indentWidthHow big the indentation should be.
Default:
2
formatter.lineEnding
Section titled formatter.lineEndingThe type of line ending.
lf
, Line Feed only (\n
), common on Linux and macOS as well as inside git reposcrlf
Carriage Return + Line Feed characters (\r\n
), common on Windowscr
Carriage Return character only (\r
), used very rarely
Default:
lf
formatter.lineWidth
Section titled formatter.lineWidthHow many characters can be written on a single line.
Default:
80
organizeImports
Section titled organizeImportsorganizeImports.enabled
Section titled organizeImports.enabledEnables Biome’s sort imports.
Default:
true
organizeImports.ignore
Section titled organizeImports.ignoreA list of Unix shell style patterns. Biome ignores files and folders that match these patterns.
{ "organizeImports": { "ignore": ["scripts/*.js"] }}
organizeImports.include
Section titled organizeImports.includeA list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "organizeImports": { "include": ["scripts/*.js"] }}
Given the following example:
{ "organizeImports": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the patter src/**/*.js
will have their imports sorted, while the files that match the pattern
scripts/**/*.js
will be ignored.
javascript
Section titled javascriptThese options apply only to JavaScript (and TypeScript) files.
javascript.parser.unsafeParameterDecoratorsEnabled
Section titled javascript.parser.unsafeParameterDecoratorsEnabledAllows to support the unsafe/experimental parameter decorators.
{ "javascript": { "parser": { "unsafeParameterDecoratorsEnabled": true } }}
Default:
false
javascript.formatter.quoteStyle
Section titled javascript.formatter.quoteStyleThe type of quote used when representing string literals. It can be single
or double
.
Default:
double
javascript.formatter.jsxQuoteStyle
Section titled javascript.formatter.jsxQuoteStyleThe type of quote used when representing jsx string literals. It can be single
or double
.
Default:
double
javascript.formatter.quoteProperties
Section titled javascript.formatter.quotePropertiesWhen properties inside objects should be quoted. It can be asNeeded
or preserve
.
Default:
asNeeded
javascript.formatter.trailingComma
Section titled javascript.formatter.trailingCommaPrint trailing commas wherever possible in multi-line comma-separated syntactic structures. Possible values:
all
, the trailing comma is always addedes5
, the trailing comma is added only in places where it’s supported by older version of JavaScriptnone
, trailing commas are never added
Default:
all
javascript.formatter.semicolons
Section titled javascript.formatter.semicolonsIt configures where the formatter prints semicolons:
always
, the semicolons is always added at the end of each statement;asNeeded
, the semicolons are added only in places where it’s needed, to protect from ASI
Default:
always
Example:
{ "javascript": { "formatter": { "semicolons": "asNeeded" } }}
javascript.formatter.arrowParentheses
Section titled javascript.formatter.arrowParenthesesWhether to add non-necessary parentheses to arrow functions:
always
, the parentheses are always added;asNeeded
, the parentheses are added only when they are needed;
Default:
always
javascript.formatter.enabled
Section titled javascript.formatter.enabledEnables Biome’s formatter for JavaScript (and its super languages) files.
Default:
true
javascript.formatter.indentStyle
Section titled javascript.formatter.indentStyleThe style of the indentation for JavaScript (and its super languages) files. It can be "tab"
or "space"
.
Default:
tab
javascript.formatter.indentSize
Section titled javascript.formatter.indentSizeHow big the indentation should be for JavaScript (and its super languages) files.
Default:
2
javascript.formatter.indentWidth
Section titled javascript.formatter.indentWidthHow big the indentation should be for JavaScript (and its super languages) files.
Default:
2
javascript.formatter.lineEnding
Section titled javascript.formatter.lineEndingThe type of line ending for JavaScript (and its super languages) files.
lf
, Line Feed only (\n
), common on Linux and macOS as well as inside git reposcrlf
Carriage Return + Line Feed characters (\r\n
), common on Windowscr
Carriage Return character only (\r
), used very rarely
Default:
lf
javascript.formatter.lineWidth
Section titled javascript.formatter.lineWidthHow many characters can be written on a single line in JavaScript (and its super languages) files.
Default:
80
javascript.formatter.bracketSameLine
Section titled javascript.formatter.bracketSameLineChoose whether the ending >
of a multi-line JSX element should be on the last attribute line or not
Default: false
javascript.formatter.bracketSpacing
Section titled javascript.formatter.bracketSpacingChoose whether spaces should be added between brackets and inner values
Default: true
javascript.globals
Section titled javascript.globalsA list of global names that Biome should ignore (analyzer, linter, etc.)
{ "javascript": { "globals": ["$", "_", "externalVariable"] }}
Options applied to the JSON files.
json.parser.allowComments
Section titled json.parser.allowCommentsEnables the parsing of comments in JSON files.
{ "json": { "parser": { "allowComments": true } }}
json.parser.allowTrailingCommas
Section titled json.parser.allowTrailingCommasEnables the parsing of trailing Commas in JSON files.
{ "json": { "parser": { "allowTrailingCommas": true } }}
json.formatter.enabled
Section titled json.formatter.enabledEnables Biome’s formatter for JSON (and its super languages) files.
Default:
true
json.formatter.indentStyle
Section titled json.formatter.indentStyleThe style of the indentation for JSON (and its super languages) files. It can be "tab"
or "space"
.
Default:
tab
json.formatter.indentSize
Section titled json.formatter.indentSizeHow big the indentation should be for JSON (and its super languages) files.
Default:
2
json.formatter.indentWidth
Section titled json.formatter.indentWidthHow big the indentation should be for JSON (and its super languages) files.
Default:
2
json.formatter.lineEnding
Section titled json.formatter.lineEndingThe type of line ending for JSON (and its super languages) files.
lf
, Line Feed only (\n
), common on Linux and macOS as well as inside git reposcrlf
Carriage Return + Line Feed characters (\r\n
), common on Windowscr
Carriage Return character only (\r
), used very rarely
Default:
lf
json.formatter.lineWidth
Section titled json.formatter.lineWidthHow many characters can be written on a single line in JSON (and its super languages) files.
Default:
80
overrides
Section titled overridesA list of patterns.
Use this configuration to change the behaviour of the tools for certain files.
When a file is matched against an override pattern, the configuration specified in that pattern will be override the top-level configuration.
The order of the patterns matter. If a file can match three patterns, only the first one is used.
overrides.<ITEM>.ignore
Section titled overrides.<ITEM>.ignoreA list of Unix shell style patterns. Biome will not apply the override to files that match the pattern.
{ "overrides": [{ "ignore": ["scripts/*.js"] }]}
overrides.<ITEM>.include
Section titled overrides.<ITEM>.includeA list of Unix shell style patterns. Biome will apply the override only to files that match the pattern.
{ "overrides": [{ "include": ["scripts/*.js"] }]}
overrides.<ITEM>.formatter
Section titled overrides.<ITEM>.formatterIt will include the options of top level formatter configuration, minus ignore
and include
.
Examples
Section titled ExamplesFor example, it’s possible to modify the formatter lineWidth
, indentStyle
for certain files that are included in the glob path generated/**
:
{ "formatter": { "lineWidth": 100 }, "overrides": [ { "include": ["generated/**"], "formatter": { "lineWidth": 160, "indentStyle": "space" } } ]}
overrides.<ITEM>.linter
Section titled overrides.<ITEM>.linterIt will include the options of top level linter configuration, minus ignore
and include
.
Examples
Section titled ExamplesYou can disable certain rules for certain glob paths, and disable the linter for other glob paths:
{ "linter": { "enabled": true, "rules": { "recommended": true } }, "overrides": [ { "include": ["lib/**"], "linter": { "rules": { "suspicious": { "noDebugger": "off" } } } }, { "include": ["shims/**"], "linter": { "enabled": false } } ]}
overrides.<ITEM>.organizeImports
Section titled overrides.<ITEM>.organizeImportsIt will include the options of top level organize imports, minus ignore
and include
.
overrides.<ITEM>.javascript
Section titled overrides.<ITEM>.javascriptIt will include the options of top level javascript configuration.
Examples
Section titled ExamplesYou can change the formatting behaviour of JavaScript files in certain folders:
{ "formatter": { "lineWidth": 120 }, "javascript": { "formatter": { "quoteStyle": "single" } }, "overrides": [ { "include": ["lib/**"], "javascript": { "formatter": { "quoteStyle": "double" } } } ]}
overrides.<ITEM>.json
Section titled overrides.<ITEM>.jsonIt will include the options of top level json configuration.
Examples
Section titled ExamplesYou can enable parsing features for certain JSON files:
{ "linter": { "enabled": true, "rules": { "recommended": true } }, "overrides": [ { "include": [".vscode/**"], "json": { "parser": { "allowComments": true, "allowTrailingCommas": true } } } ]}