Файл конфигурации Oxlint
Эта конфигурация согласована со схемой ESLint v8 (eslintrc.json).
Использование: oxlint -c oxlintrc.json
Пример
.oxlintrc.json
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["import", "typescript", "unicorn"],
"env": {
"browser": true
},
"globals": {
"foo": "readonly"
},
"settings": {
"react": {
"version": "18.2.0"
},
"custom": {
"option": true
}
},
"rules": {
"eqeqeq": "warn",
"import/no-cycle": "error",
"react/self-closing-comp": [
"error",
{
"html": false
}
]
},
"overrides": [
{
"files": ["*.test.ts", "*.spec.ts"],
"rules": {
"@typescript-eslint/no-explicit-any": "off"
}
}
]
}oxlint.config.ts
import { defineConfig } from "oxlint";
export default defineConfig({
plugins: ["import", "typescript", "unicorn"],
env: {
browser: true,
},
globals: {
foo: "readonly",
},
settings: {
react: {
version: "18.2.0",
},
custom: { option: true },
},
rules: {
eqeqeq: "warn",
"import/no-cycle": "error",
"react/self-closing-comp": ["error", { html: false }],
},
overrides: [
{
files: ["*.test.ts", "*.spec.ts"],
rules: {
"@typescript-eslint/no-explicit-any": "off",
},
},
],
});$schema
type: string
URI схемы для подсказок редактора.
categories
type: object
Задаёт целую категорию правил одним значением.
Включение или отключение через категории перекрывается отдельными правилами в поле rules.
Пример
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"categories": {
"correctness": "warn"
},
"rules": {
"eslint/no-unused-vars": "error"
}
}categories.correctness
categories.nursery
categories.pedantic
categories.perf
categories.restriction
categories.style
categories.suspicious
env
type: Record<string, boolean>
Предопределённые глобальные переменные.
Среды задают, какие глобалы считаются объявленными заранее. Доступные среды:
- amd — глобалы require() и define().
- applescript — глобалы AppleScript.
- astro — глобалы Astro.
- atomtest — глобалы тестов Atom.
- audioworklet — глобалы AudioWorklet.
- browser — глобалы браузера.
- builtin — актуальные глобалы ECMAScript, эквивалентно es2026.
- commonjs — глобалы и область CommonJS.
- embertest — глобалы тестов Ember.
- es2015 — глобалы ECMAScript 2015.
- es2016 — глобалы ECMAScript 2016.
- es2017 — глобалы ECMAScript 2017.
- es2018 — глобалы ECMAScript 2018.
- es2019 — глобалы ECMAScript 2019.
- es2020 — глобалы ECMAScript 2020.
- es2021 — глобалы ECMAScript 2021.
- es2022 — глобалы ECMAScript 2022.
- es2023 — глобалы ECMAScript 2023.
- es2024 — глобалы ECMAScript 2024.
- es2025 — глобалы ECMAScript 2025.
- es2026 — глобалы ECMAScript 2026.
- es6 — глобалы ECMAScript 6, кроме модулей.
- greasemonkey — глобалы GreaseMonkey.
- jasmine — глобалы Jasmine.
- jest — глобалы Jest.
- jquery — глобалы jQuery.
- meteor — глобалы Meteor.
- mocha — глобалы Mocha.
- mongo — глобалы MongoDB.
- nashorn — глобалы Java 8 Nashorn.
- node — глобалы и область Node.js.
- phantomjs — глобалы PhantomJS.
- prototypejs — глобалы Prototype.js.
- protractor — глобалы Protractor.
- qunit — глобалы QUnit.
- serviceworker — глобалы Service Worker.
- shared-node-browser — общие глобалы Node.js и браузера.
- shelljs — глобалы ShellJS.
- svelte — глобалы Svelte.
- vitest — глобалы Vitest.
- vue — глобалы Vue.
- webextensions — глобалы WebExtensions.
- worker — глобалы Web Workers.
extends
type: string[]
Пути к конфигурационным файлам, которые наследует этот файл. Пути разрешаются относительно файла, в котором указано свойство extends. Конфиги объединяются по порядку массива; последний перекрывает предыдущие.
globals
type: Record<string, string>
Добавить или убрать глобальные переменные.
Для каждого глобала задайте "writable", чтобы разрешить перезапись, или "readonly", чтобы запретить.
Глобал можно отключить значением "off". Например, если доступны большинство глобалов ES2015, но нет Promise:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"env": {
"es6": true
},
"globals": {
"Promise": "off"
}
}Также допускаются "readable" или false вместо "readonly", и "writeable" или true вместо "writable".
ignorePatterns
type: string[]
default: []
Glob-шаблоны игнорируемых при линтинге путей. Разрешаются относительно файла конфигурации.
jsPlugins
type: array
JS-плагины: использование ESLint-плагинов в Oxlint.
Подробнее — в документации.
Примечание: JS-плагины в alpha, semver не гарантируется.
Примеры:
Базовый вариант с локальным путём к плагину.
{
"jsPlugins": ["./custom-plugin.js"],
"rules": {
"custom/rule-name": "warn"
}
}Базовый вариант с плагином на TypeScript по локальному пути.
Файлы плагинов на TypeScript поддерживаются в таких средах:
- Deno и Bun: TypeScript нативно.
- Node.js >=22.18.0 и Node.js ^20.19.0: TypeScript нативно со встроенным удалением типов по умолчанию.
В более старых версиях Node плагины на TypeScript не поддерживаются. Используйте плагины на JavaScript или обновите Node.
{
"jsPlugins": ["./custom-plugin.ts"],
"rules": {
"custom/rule-name": "warn"
}
}Одновременное использование встроенного Rust-плагина и JS-плагина с тем же именем через псевдоним для JS-плагина.
{
"plugins": ["import"],
"jsPlugins": [{ "name": "import-js", "specifier": "eslint-plugin-import" }],
"rules": {
"import/no-cycle": "error",
"import-js/no-unresolved": "warn"
}
}jsPlugins[n]
type: object | string
jsPlugins[n].name
type: string
Пользовательское имя / псевдоним плагина.
Примечание: следующие имена зарезервированы — реализованы нативно на Rust в oxlint и не могут использоваться для JS-плагинов:
- react (includes react-hooks)
- unicorn
- typescript (includes @typescript-eslint)
- oxc
- import (includes import-x)
- jsdoc
- jest
- vitest
- jsx-a11y
- nextjs
- react-perf
- promise
- node
- vue
- eslint
Если нужна JavaScript-версия любого из этих плагинов, задайте отдельный псевдоним, чтобы избежать конфликтов.
jsPlugins[n].specifier
type: string
Путь к плагину или имя пакета
options
type: object
Опции линтера.
options.denyWarnings
type: boolean
Ненулевой код выхода при предупреждениях.
Эквивалентно --deny-warnings в CLI.
options.maxWarnings
type: integer
Порог числа предупреждений. Превышение — статус ошибки.
Эквивалентно --max-warnings в CLI.
options.reportUnusedDisableDirectives
type: "allow" | "off" | "warn" | "error" | "deny" | integer"
Сообщать о неиспользуемых директивах отключения (например // oxlint-disable-line или // eslint-disable-line).
Эквивалентно --report-unused-disable-directives-severity в CLI. При одновременной установке приоритет у флагов CLI. Только в корневом файле конфигурации.
options.respectEslintDisableDirectives
type: boolean
Учитывать ли директивы eslint-disable* и eslint-enable* вместе с нативными oxlint-*.
По умолчанию true. Только в корневом файле конфигурации.
options.typeAware
type: boolean
Включить правила, требующие информации о типах.
Эквивалентно --type-aware в CLI.
Требуется установленный пакет oxlint-tsgolint.
options.typeCheck
type: boolean
Экспериментальная проверка типов (включая диагностики компилятора TypeScript).
Эквивалентно --type-check в CLI.
Требуется установленный пакет oxlint-tsgolint.
overrides
type: array
overrides[n]
type: object
overrides[n].env
type: object
Среды включают и отключают наборы глобальных переменных.
overrides[n].files
type: string[]
Набор glob-шаблонов.
overrides[n].globals
type: object
Включение или отключение отдельных глобалов.
overrides[n].jsPlugins
type: array
JS-плагины для этого override: использование ESLint-плагинов в Oxlint.
Подробнее — в документации.
Примечание: JS-плагины в alpha, semver не гарантируется.
overrides[n].jsPlugins[n]
type: object | string
overrides[n].jsPlugins[n].name
type: string
Пользовательское имя / псевдоним плагина.
Примечание: следующие имена зарезервированы — реализованы нативно на Rust в oxlint и не могут использоваться для JS-плагинов:
- react (includes react-hooks)
- unicorn
- typescript (includes @typescript-eslint)
- oxc
- import (includes import-x)
- jsdoc
- jest
- vitest
- jsx-a11y
- nextjs
- react-perf
- promise
- node
- vue
- eslint
Если нужна JavaScript-версия любого из этих плагинов, задайте отдельный псевдоним, чтобы избежать конфликтов.
overrides[n].jsPlugins[n].specifier
type: string
Путь к плагину или имя пакета
overrides[n].plugins
type: array
default: null
По желанию меняет список плагинов для этого override. Если не указано, используются плагины базового конфига.
overrides[n].plugins[n]
type: "eslint" | "react" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "jest" | "vitest" | "jsx-a11y" | "nextjs" | "react-perf" | "promise" | "node" | "vue"
overrides[n].rules
type: object
См. правила Oxlint
plugins
type: array
default: null
Встроенные плагины Oxlint. Список доступных плагинов на сайте.
ВАЖНО: поле plugins заменяет базовый набор плагинов. Массив plugins должен перечислять все нужные плагины.
plugins[n]
type: "eslint" | "react" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "jest" | "vitest" | "jsx-a11y" | "nextjs" | "react-perf" | "promise" | "node" | "vue"
rules
type: object
См. правила Oxlint
settings
type: object
Настройка поведения плагинов линтера.
Пример для Next.js в монорепо:
{
"settings": {
"next": {
"rootDir": "apps/dashboard/"
},
"react": {
"linkComponents": [
{
"name": "Link",
"linkAttribute": "to"
}
]
},
"jsx-a11y": {
"components": {
"Link": "a",
"Button": "button"
}
}
}
}settings.jest
type: object
Настройки правил плагина Jest.
Полный справочник — в конфигурации eslint-plugin-jest.
settings.jest.version
type: integer | string
default: null
Версия Jest — число (29) или semver-строка ("29.1.0" или "v29.1.0"), сохраняется только мажорная часть.
WARNING
Эта настройка перекроет набор опций для no-deprecated-functions.
settings.jsdoc
type: object
settings.jsdoc.augmentsExtendsReplacesDocs
type: boolean
default: false
Только для правила require-(yields|returns|description|example|param|throws)
settings.jsdoc.exemptDestructuredRootsFromChecks
type: boolean
default: false
Только для правил require-param-type и require-param-description
settings.jsdoc.ignoreInternal
type: boolean
default: false
Для всех правил, кроме empty-tags
settings.jsdoc.ignorePrivate
type: boolean
default: false
Для всех правил, кроме check-access и empty-tags
settings.jsdoc.ignoreReplacesDocs
type: boolean
default: true
Только для правила require-(yields|returns|description|example|param|throws)
settings.jsdoc.implementsReplacesDocs
type: boolean
default: false
Только для правила require-(yields|returns|description|example|param|throws)
settings.jsdoc.overrideReplacesDocs
type: boolean
default: true
Только для правила require-(yields|returns|description|example|param|throws)
settings.jsdoc.tagNamePreference
type: object
default: {}
settings.jsx-a11y
type: object
Настройки плагина JSX A11y.
Полный справочник — в конфигурации eslint-plugin-jsx-a11y.
settings.jsx-a11y.attributes
type: Record<string, array>
default: {}
Соответствие имён атрибутов DOM-эквивалентам. Полезно для не-React фреймворков с другими именами атрибутов.
Пример:
{
"settings": {
"jsx-a11y": {
"attributes": {
"for": ["htmlFor", "for"]
}
}
}
}settings.jsx-a11y.components
type: Record<string, string>
default: {}
Чтобы пользовательские компоненты проверялись как DOM-элементы, задайте соответствие имён компонентов имёнам DOM-элементов.
Пример:
{
"settings": {
"jsx-a11y": {
"components": {
"Link": "a",
"IconButton": "button"
}
}
}
}settings.jsx-a11y.polymorphicPropName
type: string
Необязательно: имя пропса для полиморфных компонентов. По нему правила с семантическим контекстом определяют тип элемента.
Например, если polymorphicPropName равен as, то элемент
<Box as="h3">Hello</Box>будет обрабатываться как h3. Если не задано — как компонент Box.
settings.next
type: object
Настройки плагина Next.js.
settings.next.rootDir
type: array | string
settings.next.rootDir[n]
type: string
settings.react
type: object
Настройки плагина React.
На основе eslint-plugin-react
settings.react.componentWrapperFunctions
type: string[]
default: []
Функции, оборачивающие компоненты React и считающиеся HOC.
Пример:
{
"settings": {
"react": {
"componentWrapperFunctions": ["observer", "withRouter"],
},
},
}settings.react.formComponents
type: array
default: []
Компоненты вместо <form> для форм, например <Formik>.
Пример:
{
"settings": {
"react": {
"formComponents": [
"CustomForm",
// OtherForm is considered a form component and has an endpoint attribute
{ "name": "OtherForm", "formAttribute": "endpoint" },
// allows specifying multiple properties if necessary
{ "name": "Form", "formAttribute": ["registerEndpoint", "loginEndpoint"] },
],
},
},
}settings.react.formComponents[n]
type: object | string
settings.react.formComponents[n].attribute
type: string
settings.react.formComponents[n].name
type: string
settings.react.linkComponents
type: array
default: []
Компоненты вместо <a> для ссылок, например <Link>.
Пример:
{
"settings": {
"react": {
"linkComponents": [
"HyperLink",
// Use `linkAttribute` for components that use a different prop name
// than `href`.
{ "name": "MyLink", "linkAttribute": "to" },
// allows specifying multiple properties if necessary
{ "name": "Link", "linkAttribute": ["to", "href"] },
],
},
},
}settings.react.linkComponents[n]
type: object | string
settings.react.linkComponents[n].attribute
type: string
settings.react.linkComponents[n].name
type: string
settings.react.version
type: string
default: null
Версия React для правил, зависящих от версии.
Допускаются semver-строки (например "18.2.0", "17.0").
Пример:
{
"settings": {
"react": {
"version": "18.2.0",
},
},
}settings.vitest
type: object
Настройки плагина Vitest.
Полный справочник — в конфигурации eslint-plugin-vitest.
settings.vitest.typecheck
type: boolean
default: false
Включить режим typecheck для правил Vitest. При включении часть правил пропускает отдельные проверки для блоков describe в сценариях проверки типов TypeScript.