Перейти к содержимому

Configuration

Это содержимое пока не доступно на вашем языке.

This reference covers all supported options in biome.json/biome.jsonc. For a step-by-step introduction, see the Configure Biome guide.

To get started, scaffold a minimal biome.jsonc file using the biome init CLI command:

Terminal window
biome init --jsonc

Type: string

Specifies the JSON Schema used to validate the configuration and provide editor features such as completion and inline documentation.

If @biomejs/biome is installed locally, reference the schema included in the npm package, which always matches the installed Biome version:

biome.json
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json"
}

If your editor cannot resolve the local file, use the schema published on the Biome website:

biome.json
{
"$schema": "https://biomejs.dev/schemas/2.5.15/schema.json"
}

Type: "//" | string[]

Extends the current configuration with settings from one or more other Biome configurations.

When a subdirectory has its own Biome configuration (a nested configuration), use "//" to extend the configuration at the project root without specifying a relative path. This works at any nesting depth:

packages/frontend/biome.json
{
"extends": "//"
}

To extend configurations using relative paths or installed package specifiers, use an array:

biome.json
{
"extends": ["./common.json", "@org/shared-configs/biome"]
}

Biome merges configurations from left to right. For options that accept a single value, later configurations take precedence. For options that accept a list, Biome combines their entries. The current file is applied last.

See the Use Biome in big projects guide for monorepo setup and shared configuration examples.

Type: boolean
Default: true

Marks whether this file is the root configuration for a Biome project. The root configuration establishes the project’s base settings, while "root": false tells Biome that a configuration found inside the project is nested rather than a second project root.

Biome implicitly treats root as false when a nested configuration uses "extends": "//", while all other nested configurations must explicitly set "root": false to avoid an error.

Type: (string | { path: string, includes?: string[] })[]

A list of GritQL plugins to load. Each entry is either a plugin path or an object containing a path and optional file filters:

biome.json
{
"plugins": [
"./general-plugin.grit",
{
"path": "./react-plugin.grit",
"includes": ["**/src/components/**", "!**/src/components/generated/**"]
}
]
}

Type: string

Path to the plugin’s .grit file or a directory containing biome-manifest.jsonc.

Type: string[]

A list of glob patterns selecting the files on which the plugin runs.

If omitted, the plugin runs on every file eligible for linting. An empty list ([]) selects no files.

Type: { includes?: string[], ignoreUnknown?: boolean, maxSize?: integer, experimentalScannerIgnores?: string[] }

Configures which files Biome can discover and process.

Type: string[]

A list of glob patterns selecting which files and directories Biome can process.

If omitted, this option does not further restrict the supported files Biome can process. An empty list ([]) selects no files.

For example, this includes all JavaScript files below src:

biome.json
{
"files": {
"includes": ["src/**/*.js"]
}
}

Biome’s scanner is responsible for discovering nested configuration and ignore files. When enabled rules use the project or types domains, it also indexes source files and project dependencies.

The scanner respects files.includes and, when enabled, VCS ignore files. However, it may still discover required metadata or index excluded source files needed for analysis. To ensure that a path is never indexed, use a force-ignore pattern:

biome.json
{
"files": {
"includes": ["**", "!!**/dist"]
}
}

Force-ignore build output and nested projects that Biome should not inspect. Prefer a regular exclusion for generated source files that provide types or other project information.

Type: boolean
Default: false

Controls whether Biome suppresses diagnostics for unrecognized file types.

Type: integer
Default: 1048576

Sets the maximum source code file size in bytes. Biome will skip files above this limit for performance reasons and emit a warning diagnostic.

Type: string[]

A list of file or directory names that the scanner ignores unconditionally while crawling. Each value matches a complete path component, not a glob.

Ignored files are not added to the module graph and therefore types won’t be inferred from them.

Type: { enabled?: boolean, clientKind?: "git", useIgnoreFile?: boolean, root?: string, defaultBranch?: string }

Configures how Biome integrates with a version control system (VCS).

Type: boolean
Default: false

Enables or disables version-control integration. Enabling it requires vcs.clientKind to be set.

Type: "git"

Selects the version-control client. Currently, only "git" is supported.

Type: boolean
Default: false

Controls whether Biome applies patterns from .gitignore, Git’s local .git/info/exclude, and supported .ignore files, including nested ignore files.

Patterns in the root ignore file are resolved from vcs.root while patterns in nested ignore files are resolved from the directory containing that file.

Type: string

Sets the directory where Biome looks for version-control files. A relative value is resolved from the directory containing the current configuration file, while an absolute path is used directly.

Set this option when the Biome configuration is not located at the repository root:

frontend/biome.json
{
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true,
"root": "../"
}
}

If omitted, Biome uses the directory containing the current configuration file, falling back to the current working directory when no configuration directory is available. If neither directory is available, Biome disables VCS integration and emits a diagnostic.

Type: string

Sets the base branch used by --changed when --since is not provided. If neither vcs.defaultBranch nor --since is set, commands using --changed fail because Biome cannot determine the comparison base.

Type: { enabled?: boolean, includes?: string[], domains?: object, rules?: object }

Configures linting and the rules Biome runs on selected files.

Type: boolean
Default: true

Enables or disables the linter.

Type: string[]

A list of glob patterns selecting files to lint.

If omitted, all files selected by files.includes remain eligible for linting. An empty list ([]) selects no files.

Type: Record<string, "recommended" | "all" | "none">

Configures rules associated with a framework, library, project-wide analysis, or type analysis. Each key is a domain name and each value is one of:

  • "recommended": Enables the domain’s recommended non-nursery rules.
  • "all": Enables all rules in the domain.
  • "none": Disables the domain.

Enabling the project or types domain causes Biome to scan project dependencies. The types domain additionally enables type-aware resolution.

Type: boolean
Default: true

Enables Biome’s recommended non-nursery rules.

Type: "recommended" | "all" | "none"
Default: "recommended"

Selects the baseline set of lint rules:

  • "recommended": Enables Biome’s recommended non-nursery rules.
  • "all": Enables all non-nursery rules.
  • "none": Starts with no rules enabled.

Group-level settings and explicit rule settings override this preset. An explicit rule can therefore be enabled when the preset is "none".

Type: "off" | "on" | "info" | "warn" | "error" | { preset?: "recommended" | "all" | "none", recommended?: boolean, [rule]?: "off" | "on" | "info" | "warn" | "error" | object }

Configures all rules in one lint group:

  • a11y: Detects accessibility problems.
  • complexity: Detects unnecessarily complex code.
  • correctness: Detects code that is incorrect or has no useful effect.
  • nursery: Contains unstable rules that require explicit opt-in.
  • performance: Detects code that may be less efficient than an available alternative.
  • security: Detects potential security vulnerabilities.
  • style: Enforces consistent and idiomatic code.
  • suspicious: Detects code that is likely to be incorrect or unintended.

A group accepts either a string level or an object. A string applies one level to the group:

biome.json
{
"linter": {
"rules": {
"a11y": "info"
}
}
}

Type: "recommended" | "all" | "none"

Selects the baseline set of lint rules for one non-nursery group:

  • "recommended": Enables the group’s recommended rules.
  • "all": Enables all rules in the group.
  • "none": Starts with no rules enabled in the group.

Explicit rule settings override this group preset, which in turn overrides linter.rules.preset for the group.

Type: boolean

Enables or disables the recommended rules in a non-nursery group.

The group’s preset setting takes precedence when both options are set.

Type: "off" | "on" | "info" | "warn" | "error" | { level: "off" | "on" | "info" | "warn" | "error", options?: object, fix?: "none" | "safe" | "unsafe" }

Configures an individual lint rule.

A rule accepts either a string level or an object. A string applies one level to the rule:

An explicit rule configuration takes precedence over group-level settings and presets.

Depending on the rule, an object can contain the required level property and the optional options and fix properties:

biome.json
{
"linter": {
"rules": {
"complexity": {
"noExcessiveCognitiveComplexity": {
"level": "warn",
"options": {
"maxAllowedComplexity": 15
}
}
}
}
}
}

Type: "none" | "safe" | "unsafe"

Overrides how Biome classifies or emits a rule’s code fix. Only rules with a configurable fix accept this property:

  • "none": Prevents the rule from emitting a code fix.
  • "safe": Marks the fix as safe. Biome can apply it when writing files.
  • "unsafe": Marks the fix as unsafe. Biome applies it only when unsafe fixes are explicitly enabled.

Changing a fix’s classification does not change the fix itself. Review a fix before marking it as safe. See Configure the code fix for an example and details about safe and unsafe fixes.

This property is also available for rule configurations inside overrides.

Type: { enabled?: boolean, includes?: string[], actions?: object }

Configures assist actions that Biome checks or applies on selected files.

Type: boolean
Default: true

Enables or disables configured assist actions in the CLI and editor integrations.

Type: string[]

A list of glob patterns selecting files on which assist actions can run.

If omitted, all files selected by files.includes remain eligible for assist actions. An empty list ([]) selects no files.

Type: boolean
Default: true

Enables Biome’s recommended assist actions across all action groups.

Type: "recommended" | "all" | "none"
Default: "recommended"

Selects the baseline set of assist actions:

  • "recommended": Enables Biome’s recommended actions.
  • "all": Enables all actions.
  • "none": Starts with no actions enabled.

Group presets and explicit action settings override this preset. An explicit action can therefore be enabled when the preset is "none".

Type: { preset?: "recommended" | "all" | "none", recommended?: boolean, [action]?: "on" | "off" | object }

Configures one group of assist actions:

  • source: Contains source-level actions such as organizing imports and sorting supported declarations. These actions can be exposed as editor source actions and checked or applied by the CLI.

Type: "recommended" | "all" | "none"

Selects the baseline set of assist actions for one group:

  • "recommended": Enables the group’s recommended actions.
  • "all": Enables all actions in the group.
  • "none": Starts with no actions enabled in the group.

Explicit action settings override this group preset, which in turn overrides assist.actions.preset for the group.

Type: boolean

Enables or disables the recommended actions in one group.

The group’s preset setting takes precedence when both options are set.

Type: "on" | "off" | { level: "on" | "off", options: object }

Configures an individual assist action.

An action accepts either a string level or an object. A string applies one level to the action:

  • "on": Enables the action.
  • "off": Disables the action.

An explicit action configuration takes precedence over group-level settings and presets.

An object contains the required level and options properties. The available options depend on the action:

biome.json
{
"assist": {
"actions": {
"source": {
"useSortedKeys": {
"level": "on",
"options": {
"sortOrder": "natural"
}
}
}
}
}
}

See the assist documentation for the options supported by each action.

Type: { enabled?: boolean, includes?: string[], formatWithErrors?: boolean, indentStyle?: "tab" | "space", indentWidth?: integer, lineEnding?: "lf" | "crlf" | "cr" | "auto", lineWidth?: integer, attributePosition?: "auto" | "multiline", bracketSameLine?: boolean, bracketSpacing?: boolean, delimiterSpacing?: boolean, expand?: "auto" | "always" | "never", trailingNewline?: boolean, useEditorconfig?: boolean }

Configures formatting for selected files.

Type: boolean
Default: true

Enables or disables the formatter.

Type: string[]

A list of glob patterns selecting files to format.

If omitted, all files selected by files.includes remain eligible for formatting. An empty list ([]) selects no files.

Type: boolean
Default: false

Controls whether Biome formats files that contain syntax errors.

Type: "tab" | "space"
Default: "tab"

Selects the indentation style:

  • "tab": Uses tabs for indentation.
  • "space": Uses spaces for indentation.

Type: integer
Default: 2

Sets the indentation width. With "space" indentation, this is the number of spaces emitted per indentation level. With "tab" indentation, Biome emits one tab per level and uses this value as the tab’s display width when calculating line length.

Accepted values range from 0 through 24.

Type: "lf" | "crlf" | "cr" | "auto"
Default: "lf"

Selects the line-ending sequence:

  • "lf": Line Feed (\n), commonly used on Linux and macOS.
  • "crlf": Carriage Return followed by Line Feed (\r\n), commonly used on Windows.
  • "cr": Carriage Return (\r), which is rarely used.
  • "auto": Uses CRLF on Windows and LF on other platforms.

Type: integer
Default: 80

Sets the preferred maximum line width used when deciding where to wrap code. Some content, such as long unbreakable strings, may still exceed this width.

Accepted values range from 1 through 320.

Type: "auto" | "multiline"
Default: "auto"

Controls attribute placement in HTML-like languages:

  • "auto": Places attributes automatically and wraps them when needed.
  • "multiline": Places each attribute on its own line when an element has multiple attributes.

Type: boolean
Default: false

Controls the placement of the closing bracket for multiline HTML and JSX opening tags.

Biome places the bracket at the end of the last attribute line when enabled and on its own line after the last attribute when disabled.

This option also affects self-closing HTML elements, but self-closing JSX elements are unaffected.

Type: boolean
Default: true

Controls spaces inside braces in supported single-line structures. The affected structures vary by language.

Type: boolean
Default: false

Controls spaces immediately inside supported delimiters when their content fits on one line.

Biome does not add spaces before opening delimiters or inside empty delimiters. The affected delimiters vary by language.

Type: "auto" | "always" | "never"
Default: "auto"

Controls whether arrays and objects are formatted on one line or multiple lines:

  • "auto": Formats objects on multiple lines if the first property has a leading newline, and keeps arrays on one line when they fit.
  • "always": Formats arrays and objects on multiple lines.
  • "never": Keeps arrays and objects on one line when they fit.

When formatting package.json, Biome uses "always" unless expansion is configured explicitly.

Type: boolean
Default: true

Controls whether formatted files end with a newline.

Type: boolean
Default: false

Controls whether Biome loads formatter settings from an .editorconfig file. Biome currently reads indent_style, indent_size, end_of_line, and insert_final_newline. Settings in biome.json or biome.jsonc take precedence.

Biome loads only one .editorconfig. Nested cascading configurations and the EditorConfig root property are not currently supported.

Type: { includes?: string[], formatter?: object, linter?: object, assist?: object, files?: object, plugins?: (string | object)[], javascript?: object, json?: object, css?: object, graphql?: object, grit?: object, html?: object }[]

Configures settings for files selected by each override.

When multiple overrides configure the same single-value setting, the last matching override takes precedence.

Type: string[]

A list of glob patterns selecting the files to which the override applies.

If omitted, the override applies to every file. An empty list ([]) applies to no files.

For example, this override changes the line width for JavaScript files directly under scripts:

biome.jsonc
{
"overrides": [
{
"includes": ["scripts/*.js"],
// Settings in this object apply only to matched files.
"formatter": {
"lineWidth": 100
}
}
]
}

Type: { enabled?: boolean, formatWithErrors?: boolean, indentStyle?: "tab" | "space", indentSize?: integer, indentWidth?: integer, lineEnding?: "lf" | "crlf" | "cr" | "auto", lineWidth?: integer, attributePosition?: "auto" | "multiline", bracketSameLine?: boolean, bracketSpacing?: boolean, delimiterSpacing?: boolean, expand?: "auto" | "always" | "never", trailingCommas?: "all" | "es5" | "none", trailingNewline?: boolean }

Configures formatter settings for files selected by this override.

Type: { enabled?: boolean, domains?: object, rules?: object }

Configures linter settings for files selected by this override.

biome.json
{
"overrides": [
{
"includes": ["lib/**"],
"linter": {
"rules": {
"suspicious": {
"noDebugger": "off"
}
}
}
},
{
"includes": ["shims/**"],
"linter": {
"enabled": false
}
}
]
}

Type: { enabled?: boolean, actions?: object }

Configures assist settings for files selected by this override.

Type: { maxSize?: integer }

Configures file-handling settings for files selected by this override.

Type: (string | { path: string, includes?: string[] })[]

Adds plugins for files selected by this override. They run in addition to top-level plugins.

Type: { parser?: object, formatter?: object, linter?: object, assist?: object, resolver?: object, globals?: string[], jsxRuntime?: "transparent" | "reactClassic", experimentalEmbeddedSnippetsEnabled?: boolean }

Configures JavaScript-specific settings for files selected by this override.

biome.json
{
"javascript": {
"formatter": {
"quoteStyle": "single"
}
},
"overrides": [
{
"includes": ["lib/**"],
"javascript": {
"formatter": {
"quoteStyle": "double"
}
}
}
]
}

Type: { parser?: object, formatter?: object, linter?: object, assist?: object }

Configures JSON-specific settings for files selected by this override.

The following override enables comments and trailing commas in JSON files below .vscode/:

biome.json
{
"overrides": [
{
"includes": [".vscode/**"],
"json": {
"parser": {
"allowComments": true,
"allowTrailingCommas": true
}
}
}
]
}

Type: { parser?: object, formatter?: object, globals?: string[], linter?: object, assist?: object }

Configures CSS-specific settings for files selected by this override.

Type: { formatter?: object, linter?: object, assist?: object }

Configures GraphQL-specific settings for files selected by this override.

Type: { formatter?: object, linter?: object, assist?: object }

Configures GritQL-specific settings for files selected by this override.

Type: { experimentalFullSupportEnabled?: boolean, parser?: object, formatter?: object, linter?: object, assist?: object }

Configures HTML-specific settings for files selected by this override.

The following sections describe parser, formatter, linter, and assist options for individual languages.

Type: { parser?: object, formatter?: object, linter?: object, assist?: object, resolver?: object, globals?: string[], jsxRuntime?: "transparent" | "reactClassic", experimentalEmbeddedSnippetsEnabled?: boolean }

Options applied to JavaScript, TypeScript, JSX, TSX, and supported languages that embed JavaScript.

javascript.parser.unsafeParameterDecoratorsEnabled

Section titled “javascript.parser.unsafeParameterDecoratorsEnabled”

Type: boolean
Default: false

Enables parsing decorators on class parameters, such as method(@Decorator() value). This syntax belongs to an old experimental proposal and may change, so enable it only when existing code requires it.

Type: boolean
Default: false

Enables parsing Grit metavariables in JavaScript and TypeScript syntax.

Type: boolean
Default: true

Controls whether .js, .mjs, and .cjs files may contain JSX syntax. Disabling this option causes JSX in those files to raise a diagnostic.

Type: "single" | "double"
Default: "double"

Selects the preferred quote style for JavaScript and TypeScript string literals:

  • "single": Prefers single quotes.
  • "double": Prefers double quotes.

Biome may use the alternate quote when that avoids additional escaping.

Type: "single" | "double"
Default: "double"

Selects the preferred quote style for JSX attribute values:

  • "single": Prefers single quotes.
  • "double": Prefers double quotes.

Type: "asNeeded" | "preserve"
Default: "asNeeded"

Controls whether quotes around object property names are preserved:

  • "asNeeded": Removes quotes when the property name is valid without them.
  • "preserve": Preserves quotes around property names that were quoted in the input.

Type: "all" | "es5" | "none"
Default: "all"

Controls trailing commas in multiline comma-separated structures:

  • "all": Adds trailing commas wherever syntax permits, including function parameters and calls.
  • "es5": Adds them only in constructs supported by ES5, such as array and object literals. It excludes function parameters, function calls, and TypeScript type parameters.
  • "none": Removes trailing commas.

Type: "always" | "asNeeded"
Default: "always"

Controls where the formatter prints semicolons:

  • "always": Prints semicolons after statements.
  • "asNeeded": Omits semicolons except where needed to avoid automatic semicolon insertion hazards.

Type: "always" | "asNeeded"
Default: "always"

Controls parentheses around arrow-function parameters:

  • "always": Always prints parentheses.
  • "asNeeded": Omits parentheses when an arrow function has one parameter and the syntax permits it.

Type: boolean

Enables or disables the formatter for JavaScript and languages that extend it.

Type: "tab" | "space"

Selects the indentation style:

  • "tab": Uses tabs for indentation.
  • "space": Uses spaces for indentation.

Type: integer

Sets the indentation width, from 0 through 24.

Type: "lf" | "crlf" | "cr" | "auto"

Selects the line-ending sequence:

  • "lf": Line Feed (\n), commonly used on Linux and macOS.
  • "crlf": Carriage Return followed by Line Feed (\r\n), commonly used on Windows.
  • "cr": Carriage Return (\r), which is rarely used.
  • "auto": Uses CRLF on Windows and LF on other platforms.

Type: integer

Sets the preferred maximum line width, from 1 through 320.

Type: boolean

Controls the placement of the closing bracket for multiline JSX opening tags.

Biome places the bracket at the end of the last attribute line when enabled and on its own line after the last attribute when disabled.

Self-closing JSX elements are unaffected.

Type: boolean

Controls spaces inside the braces of single-line object literals.

Biome formats {value: 1} when disabled and { value: 1 } when enabled.

Type: boolean

Controls spaces immediately inside supported JavaScript and TypeScript delimiters when their content fits on one line.

This option affects parentheses, square brackets, template interpolations, TypeScript angle brackets, and JSX expression braces. Empty delimiters are unchanged.

It also controls spacing after logical NOT operators. In a chain of logical NOT operators, only the final operator receives a following space.

Type: "auto" | "multiline"

Controls attribute placement in JSX elements:

  • "auto": Places attributes automatically and wraps them when needed.
  • "multiline": Places each attribute on its own line when an element has multiple attributes.

Type: "auto" | "always" | "never"

Controls whether arrays and objects are formatted on one line or multiple lines:

  • "auto": Formats objects on multiple lines if the first property has a leading newline, and keeps arrays on one line when they fit.
  • "always": Formats arrays and objects on multiple lines.
  • "never": Keeps arrays and objects on one line when they fit.

Type: "after" | "before"
Default: "after"

Controls operator placement when a binary or logical expression wraps:

  • "after": Places the operator at the end of the preceding line.
  • "before": Places the operator at the beginning of the following line.

Type: boolean

Controls whether formatted files end with a newline.

Type: string[]

A list of additional names that Biome’s JavaScript linter treats as predefined global bindings.

Use this for globals supplied by a runtime, framework, or external script that are not declared in the source file:

biome.json
{
"javascript": {
"globals": ["$", "_", "externalVariable"]
}
}

Type: "transparent" | "reactClassic"
Default: "transparent"

Configures how Biome’s analyzer accounts for imports used by JSX. This option does not transform JSX or select a runtime for your build tool.

  • "transparent": Use for the automatic React JSX transform, native JSX environments, and setups where JSX does not require an in-scope factory import. Biome applies no classic-runtime handling.
  • "reactClassic": Use for the classic React JSX transform. Biome treats the React import, or custom JSX factory imports configured in tsconfig.json, as runtime values used by JSX. This corresponds to TypeScript’s "jsx": "react" mode.

See React’s introduction to the new JSX transform for background.

javascript.resolver.experimentalPnpmCatalogs

Section titled “javascript.resolver.experimentalPnpmCatalogs”

Type: boolean
Default: false

Enables experimental pnpm workspace catalog resolution when Biome reads JavaScript package manifests. Biome resolves catalog: and catalog:<name> versions in dependencies, devDependencies, and peerDependencies using top-level catalog and catalogs mappings in pnpm-workspace.yaml.

If the workspace file is missing, unreadable, or invalid, Biome behaves as though this option were disabled.

Type: boolean

Enables or disables the linter for JavaScript and languages that extend it.

Type: boolean

Enables or disables assist actions for JavaScript and languages that extend it.

javascript.experimentalEmbeddedSnippetsEnabled

Section titled “javascript.experimentalEmbeddedSnippetsEnabled”

Type: boolean
Default: false

Enables experimental parsing, formatting, linting, diagnostics, and fixes for CSS and GraphQL snippets embedded in JavaScript and TypeScript template literals.

Biome recognizes CSS in css and styled templates and GraphQL in gql and graphql templates or calls. Templates containing interpolations are not currently supported.

Type: { parser?: object, formatter?: object, linter?: object, assist?: object }

Options applied to JSON, JSONC, and recognized JSON-based configuration files.

Type: boolean

Controls whether comments are allowed in files parsed as JSON.

When unset, Biome follows the file type’s default behavior. An explicit value overrides that behavior, except that biome.jsonc always allows comments.

Type: boolean

Controls whether trailing commas are allowed in files parsed as JSON.

When unset, Biome follows the file type’s default behavior. An explicit value overrides that behavior, except that biome.jsonc always allows trailing commas.

Type: boolean

Enables or disables the formatter for JSON and languages that extend it.

Type: "tab" | "space"

Selects the indentation style:

  • "tab": Uses tabs for indentation.
  • "space": Uses spaces for indentation.

Type: integer

Sets the indentation width, from 0 through 24.

Type: "lf" | "crlf" | "cr" | "auto"

Selects the line-ending sequence:

  • "lf": Line Feed (\n), commonly used on Linux and macOS.
  • "crlf": Carriage Return followed by Line Feed (\r\n), commonly used on Windows.
  • "cr": Carriage Return (\r), which is rarely used.
  • "auto": Uses CRLF on Windows and LF on other platforms.

Type: integer

Sets the preferred maximum line width, from 1 through 320.

Type: "none" | "all"
Default: "none"

Controls trailing commas in multiline JSON arrays and objects:

  • "none": Removes trailing commas.
  • "all": Adds trailing commas wherever the JSON formatter supports them.

Use "all" only for JSON variants that allow trailing commas, and ensure json.parser.allowTrailingCommas is enabled or automatically detected for those files.

Type: boolean

Controls spaces inside the braces of single-line JSON objects.

Biome formats {"name": "Biome"} when disabled and { "name": "Biome" } when enabled.

Type: boolean

Controls spaces immediately inside JSON square brackets when an array fits on one line.

Biome formats [1, 2, 3] when disabled and [ 1, 2, 3 ] when enabled. Empty arrays are unchanged.

Type: "auto" | "always" | "never"

Controls whether arrays and objects are formatted on one line or multiple lines:

  • "auto": Formats objects on multiple lines if the first property has a leading newline, and keeps arrays on one line when they fit.
  • "always": Formats arrays and objects on multiple lines.
  • "never": Keeps arrays and objects on one line when they fit.

When formatting package.json, Biome uses "always" unless expansion is configured explicitly.

Type: boolean

Controls whether formatted files end with a newline.

Type: boolean

Enables or disables the linter for JSON and languages that extend it.

Type: boolean

Enables or disables assist actions for JSON and languages that extend it.

Type: { parser?: object, formatter?: object, globals?: string[], linter?: object, assist?: object }

Options applied to CSS and languages that extend it.

Type: boolean
Default: false

Enables // line comments in plain CSS. Standard CSS treats // as delimiter characters rather than as a comment, and SCSS accepts // comments independently of this option.

Type: boolean
Default: false

Enables CSS Modules-specific syntax such as :local, :global, composes, and @value.

When this option is unset, Biome enables this syntax automatically for files whose names end in .module.css, so enable it explicitly only when CSS Module files use another naming convention.

Type: boolean
Default: false

Enables parsing Tailwind CSS 4.0 directives and functions, including @theme, @utility, @variant, @source, and @apply.

Type: boolean

Enables or disables the formatter for CSS and languages that extend it.

Type: "tab" | "space"

Selects the indentation style:

  • "tab": Uses tabs for indentation.
  • "space": Uses spaces for indentation.

Type: integer

Sets the indentation width, from 0 through 24.

Type: "lf" | "crlf" | "cr" | "auto"

Selects the line-ending sequence:

  • "lf": Line Feed (\n), commonly used on Linux and macOS.
  • "crlf": Carriage Return followed by Line Feed (\r\n), commonly used on Windows.
  • "cr": Carriage Return (\r), which is rarely used.
  • "auto": Uses CRLF on Windows and LF on other platforms.

Type: integer

Sets the preferred maximum line width, from 1 through 320.

Type: "single" | "double"
Default: "double"

Selects the preferred quote style for CSS strings:

  • "single": Prefers single quotes.
  • "double": Prefers double quotes.

Biome may use the alternate quote when that avoids additional escaping.

Quotes in @charset rules are currently preserved.

Type: boolean

Controls spaces immediately inside CSS parentheses and square brackets when their content fits on one line.

When enabled, rgb(0, 0, 0) becomes rgb( 0, 0, 0 ) and [data-attr] becomes [ data-attr ]. Empty delimiters are unchanged.

Type: boolean

Controls whether formatted files end with a newline.

Type: string[]

Reserved for future CSS analyzer support. This option currently has no effect.

Type: boolean

Enables or disables the linter for CSS.

Type: boolean

Enables or disables assist actions for CSS.

Type: { formatter?: object, linter?: object, assist?: object }

Options applied to GraphQL files.

Type: boolean

Enables or disables the formatter for GraphQL.

Type: "tab" | "space"

Selects the indentation style:

  • "tab": Uses tabs for indentation.
  • "space": Uses spaces for indentation.

Type: integer

Sets the indentation width, from 0 through 24.

Type: "lf" | "crlf" | "cr" | "auto"

Selects the line-ending sequence:

  • "lf": Line Feed (\n), commonly used on Linux and macOS.
  • "crlf": Carriage Return followed by Line Feed (\r\n), commonly used on Windows.
  • "cr": Carriage Return (\r), which is rarely used.
  • "auto": Uses CRLF on Windows and LF on other platforms.

Type: integer

Sets the preferred maximum line width, from 1 through 320.

Type: "single" | "double"

Reserved for future formatter support. The current formatter preserves standard double-quoted GraphQL strings regardless of this setting.

Type: boolean

Controls spaces inside the braces of single-line GraphQL object values.

Biome formats {name: "Biome"} when disabled and { name: "Biome" } when enabled.

Type: boolean

Controls whether formatted files end with a newline.

Type: boolean

Enables or disables the linter for GraphQL.

Type: boolean
Default: false

Enables or disables assist actions for GraphQL.

Type: { formatter?: object, linter?: object, assist?: object }

Options applied to GritQL files.

Type: boolean

Enables or disables the formatter for GritQL.

Type: "tab" | "space"

Selects the indentation style:

  • "tab": Uses tabs for indentation.
  • "space": Uses spaces for indentation.

Type: integer

Sets the indentation width, from 0 through 24.

Type: "lf" | "crlf" | "cr" | "auto"

Selects the line-ending sequence:

  • "lf": Line Feed (\n), commonly used on Linux and macOS.
  • "crlf": Carriage Return followed by Line Feed (\r\n), commonly used on Windows.
  • "cr": Carriage Return (\r), which is rarely used.
  • "auto": Uses CRLF on Windows and LF on other platforms.

Type: integer

Sets the preferred maximum line width, from 1 through 320.

Type: boolean

Controls whether formatted files end with a newline.

Type: boolean

Enables or disables the linter for GritQL.

Type: boolean

Enables or disables assist actions for GritQL.

Type: { experimentalFullSupportEnabled?: boolean, parser?: object, formatter?: object, linter?: object, assist?: object }

Options applied to HTML and languages that extend it.

Type: boolean
Default: false

Enables Biome’s experimental full support for .html, .vue, .svelte, and .astro files. In this mode, Biome parses the complete document and can analyze or format its markup and supported embedded languages.

When disabled, .vue, .svelte, and .astro files use legacy handling, which extracts their JavaScript or TypeScript portions and leaves the rest unchanged.

Type: boolean
Default: false

Enables double-curly interpolation expressions such as {{ expression }} in .html files.

Type: boolean
Default: false

Enables Vue syntax such as v-if and v-bind in .html files. Enabling this option also enables html.parser.interpolation.

Biome automatically recognizes .vue files. Use this option only when .html files contain Vue template syntax. It does not change how .vue, .svelte, or .astro files are parsed.

Type: boolean
Default: false

Enables or disables the formatter for HTML and languages that extend it. Formatting complete HTML, Vue, Svelte, and Astro files requires html.experimentalFullSupportEnabled to be true.

Type: "tab" | "space"

Selects the indentation style:

  • "tab": Uses tabs for indentation.
  • "space": Uses spaces for indentation.

Type: integer

Sets the indentation width, from 0 through 24.

Type: "lf" | "crlf" | "cr" | "auto"

Selects the line-ending sequence:

  • "lf": Line Feed (\n), commonly used on Linux and macOS.
  • "crlf": Carriage Return followed by Line Feed (\r\n), commonly used on Windows.
  • "cr": Carriage Return (\r), which is rarely used.
  • "auto": Uses CRLF on Windows and LF on other platforms.

Type: integer

Sets the preferred maximum line width, from 1 through 320.

Type: "auto" | "multiline"

Controls attribute placement in HTML elements:

  • "auto": Places attributes automatically and wraps them when needed.
  • "multiline": Places each attribute on its own line when an element has multiple attributes.

Type: boolean

Controls the placement of the closing bracket for multiline HTML opening tags.

Biome places the bracket at the end of the last attribute line when enabled and on its own line after the last attribute when disabled.

This option also affects self-closing HTML elements.

Type: "css" | "strict" | "ignore"
Default: "css"

Controls how the formatter treats whitespace around text and child elements in HTML, Vue, Svelte, and Astro markup:

  • "css": Treats whitespace as significant for elements that browsers display inline by default.
  • "strict": Treats leading and trailing whitespace as significant for every element. Existing whitespace is preserved as at least one character and absent whitespace is not added.
  • "ignore": Treats whitespace as insignificant, allowing the formatter to add or remove it. Use this only when whitespace cannot affect rendered output.

Type: boolean
Default: false

Controls whether the content of <script> and <style> tags is indented by one level in HTML, Vue, Svelte, and Astro files.

Type: "never" | "always"
Default: "never"

Controls whether HTML void elements such as <img> and <input> include a slash before >:

  • "never": Removes the slash, for example <img src="image.png">.
  • "always": Adds the slash, for example <img src="image.png" />.

Type: boolean
Default: true

Controls whether formatted files end with a newline.

Unlike other language-specific trailing-newline settings, this option does not inherit formatter.trailingNewline.

Type: boolean

Enables or disables the linter for HTML and languages that extend it.

Type: boolean

Enables or disables assist actions for HTML and languages that extend it.

Biome uses glob patterns to match file and directory paths relative to the configuration directory. Patterns are case-sensitive and use / as the path separator.

SyntaxMeaningExample
*Matches characters within one path segmentsrc/*.js
**Matches zero or more complete path segments**/*.js
{a,b}Matches either alternative**/*.{js,ts}
\Escapes a special character so it is matched literally. Write \\ in JSON configuration files.file\\?.js
!patternExcludes matching paths!**/*.test.js
!!patternForce-ignores matching paths in files.includes!!**/dist

Patterns are evaluated in order, and the last matching pattern wins. For example, the following patterns include JavaScript files, exclude test files, then include src/special.test.js again:

["**/*.js", "!**/*.test.js", "src/special.test.js"]

files.includes applies to both files and directories, while other includes settings filter files for a specific feature. This changes how directory exclusions are written:

Goalfiles.includesOther includes settings
Exclude the root dist directory!dist!dist/**
Exclude dist directories at any depth!**/dist!**/dist/**
Force-ignore dist directories at any depth!!**/distNot supported

The !! prefix creates a force-ignore pattern only in files.includes. In other includes settings, it behaves like a regular ! exclusion. See scanner behavior for details.

Biome intentionally has a limited glob syntax, with a few expected features not supported:

SyntaxBehavior
?Not supported as a wildcard
[abc] and [0-9]Character classes are not supported
{{a,b},c}Nested alternatives are not supported
a**, **a, and ***** must occupy an entire path segment
**/**Consecutive globstars are not supported