Arquivo de configuração Oxlint
Este formato segue o esquema ESLint v8 (eslintrc.json).
Uso: oxlint -c oxlintrc.json
Exemplo
.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 do schema para tooling do editor.
categories
type: object
Configura todas as regras de uma categoria de uma vez.
Regras ligadas ou desligadas aqui são sobrescritas por regras individuais em rules.
Exemplo
{
"$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>
Predefine variáveis globais.
O ambiente determina quais globais existem de antemão. Ambientes disponíveis:
- amd — globais
require()edefine(). - applescript — globais AppleScript.
- astro — globais Astro.
- atomtest — globais de testes Atom.
- audioworklet — globais AudioWorklet.
- browser — globais de navegador.
- builtin — globais ECMAScript recentes, equivalente a es2026.
- commonjs — globais e escopo CommonJS.
- embertest — globais de testes Ember.
- es2015 — globais ECMAScript 2015.
- es2016 — globais ECMAScript 2016.
- es2017 — globais ECMAScript 2017.
- es2018 — globais ECMAScript 2018.
- es2019 — globais ECMAScript 2019.
- es2020 — globais ECMAScript 2020.
- es2021 — globais ECMAScript 2021.
- es2022 — globais ECMAScript 2022.
- es2023 — globais ECMAScript 2023.
- es2024 — globais ECMAScript 2024.
- es2025 — globais ECMAScript 2025.
- es2026 — globais ECMAScript 2026.
- es6 — globais ECMAScript 6 exceto módulos.
- greasemonkey — globais GreaseMonkey.
- jasmine — globais Jasmine.
- jest — globais Jest.
- jquery — globais jQuery.
- meteor — globais Meteor.
- mocha — globais Mocha.
- mongo — globais MongoDB.
- nashorn — globais Nashorn Java 8.
- node — globais e escopo Node.js.
- phantomjs — globais PhantomJS.
- prototypejs — globais Prototype.js.
- protractor — globais Protractor.
- qunit — globais QUnit.
- serviceworker — globais Service Worker.
- shared-node-browser — globais comuns a Node.js e navegador.
- shelljs — globais ShellJS.
- svelte — globais Svelte.
- vitest — globais Vitest.
- vue — globais Vue.
- webextensions — globais WebExtensions.
- worker — globais Web Workers.
extends
type: string[]
Caminhos de arquivos de config que este arquivo estende (herda). São resolvidos em relação ao arquivo que contém extends. A mesclagem vai do primeiro ao último; o último prevalece.
globals
type: Record<string, string>
Adiciona ou remove globais.
Para cada global, use "writable" para permitir reatribuição ou "readonly" para proibir.
Globais podem ser desligados com "off". Por exemplo, se quase todos globais ES2015 existem menos Promise:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"env": {
"es6": true
},
"globals": {
"Promise": "off"
}
}Também vale "readable" ou false como "readonly" e "writeable" ou true como "writable".
ignorePatterns
type: string[]
padrão: []
Globs ignorados durante o lint. Caminhos relativos ao arquivo de config.
jsPlugins
type: array
Plugins JS permitem usar plugins ESLint no Oxlint.
Mais em documentação de plugins JS.
Nota: plugins JS estão em alpha e não seguem semver.
Exemplos:
Uso básico com plugin local.
{
"jsPlugins": ["./custom-plugin.js"],
"rules": {
"custom/rule-name": "warn"
}
}Uso básico com plugin TypeScript local.
Arquivos de plugin TS são suportados nestes ambientes:
- Deno e Bun: TypeScript nativo.
- Node.js >=22.18.0 e Node.js ^20.19.0: TypeScript nativo com type-stripping ligado por padrão.
Em Node mais antigo não há suporte a plugins TS; use JavaScript ou atualize o Node.
{
"jsPlugins": ["./custom-plugin.ts"],
"rules": {
"custom/rule-name": "warn"
}
}Combinar plugin Rust embutido com plugin JS de mesmo nome usando alias.
{
"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
Nome ou alias personalizado do plugin.
Nota: os nomes seguintes são reservados porque estão implementados nativamente em Rust no oxlint e não podem ser usados como plugin JS:
- react (inclui react-hooks)
- unicorn
- typescript (inclui @typescript-eslint)
- oxc
- import (inclui import-x)
- jsdoc
- jest
- vitest
- jsx-a11y
- nextjs
- react-perf
- promise
- node
- vue
- eslint
Para usar a versão JavaScript de algum deles, defina um alias à parte.
jsPlugins[n].specifier
type: string
Caminho ou nome do pacote do plugin
options
type: object
Opções gerais do linter.
options.denyWarnings
type: boolean
Warnings passam a sair com código de saída diferente de zero.
Equivale ao flag --deny-warnings.
options.maxWarnings
type: integer
Limite de avisos; acima disso o processo termina com erro.
Equivale a passar --max-warnings na CLI.
options.reportUnusedDisableDirectives
type: "allow" | "off" | "warn" | "error" | "deny" | integer
Reporta diretivas de desligamento não usadas (ex.: // oxlint-disable-line ou // eslint-disable-line).
Equivale a --report-unused-disable-directives-severity; flags CLI prevalecem quando ambos existem. Só no arquivo de configuração raiz.
options.respectEslintDisableDirectives
type: boolean
Se eslint-disable* / eslint-enable* devem ser honrados junto com oxlint-*.
Padrão true. Só na raiz.
options.typeAware
type: boolean
Ativa regras que precisam de informação de tipo.
Equivale ao --type-aware.
Exige instalar o pacote oxlint-tsgolint.
options.typeCheck
type: boolean
Type-check experimental (diagnósticos do compilador TypeScript).
Equivale ao --type-check.
Exige pacote oxlint-tsgolint.
overrides
type: array
overrides[n]
type: object
overrides[n].env
type: object
Ambientes ligam ou desligam coleções de globais.
overrides[n].files
type: string[]
Conjunto de padrões glob.
overrides[n].globals
type: object
Globais específicos ligados ou desligados.
overrides[n].jsPlugins
type: array
Plugins JS nesta sobrescrita; uso de plugins ESLint no Oxlint.
Documentação: plugins JS.
Nota: alpha, sem semver.
overrides[n].jsPlugins[n]
type: object | string
overrides[n].jsPlugins[n].name
type: string
Nome ou alias personalizado do plugin.
Nota: os nomes seguintes são reservados (nativos Rust no oxlint):
- react (inclui react-hooks)
- unicorn
- typescript (inclui @typescript-eslint)
- oxc
- import (inclui import-x)
- jsdoc
- jest
- vitest
- jsx-a11y
- nextjs
- react-perf
- promise
- node
- vue
- eslint
Para a versão JavaScript, use alias customizado.
overrides[n].jsPlugins[n].specifier
type: string
Caminho ou nome do pacote do plugin
overrides[n].plugins
type: array
padrão: null
Opcionalmente altera plugins nesta sobrescrita. Omitido mantém plugins da base.
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
Veja regras Oxlint.
plugins
type: array
padrão: null
Plugins embutidos habilitados. Lista em Plugins.
NOTA: definir plugins substitui o conjunto base — inclua todos que precisar.
plugins[n]
type: "eslint" | "react" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "jest" | "vitest" | "jsx-a11y" | "nextjs" | "react-perf" | "promise" | "node" | "vue"
rules
type: object
Veja regras Oxlint.
settings
type: object
Comportamento dos plugins de lint.
Exemplo com Next.js num monorepo:
{
"settings": {
"next": {
"rootDir": "apps/dashboard/"
},
"react": {
"linkComponents": [
{
"name": "Link",
"linkAttribute": "to"
}
]
},
"jsx-a11y": {
"components": {
"Link": "a",
"Button": "button"
}
}
}
}settings.jest
type: object
Configura regras do plugin Jest.
Referência completa em eslint-plugin-jest.
settings.jest.version
type: integer | string
padrão: null
Versão do Jest — aceita número (29) ou semver ("29.1.0" ou "v29.1.0"), persistindo apenas a major.
WARNING
Usar esta opção sobrescreve a config de no-deprecated-functions.
settings.jsdoc
type: object
settings.jsdoc.augmentsExtendsReplacesDocs
type: boolean
padrão: false
Somente para a regra require-(yields|returns|description|example|param|throws)
settings.jsdoc.exemptDestructuredRootsFromChecks
type: boolean
padrão: false
Somente para require-param-type e require-param-description
settings.jsdoc.ignoreInternal
type: boolean
padrão: false
Para todas as regras exceto empty-tags
settings.jsdoc.ignorePrivate
type: boolean
padrão: false
Para todas exceto check-access e empty-tags
settings.jsdoc.ignoreReplacesDocs
type: boolean
padrão: true
Somente para require-(yields|returns|description|example|param|throws)
settings.jsdoc.implementsReplacesDocs
type: boolean
padrão: false
Somente para require-(yields|returns|description|example|param|throws)
settings.jsdoc.overrideReplacesDocs
type: boolean
padrão: true
Somente para require-(yields|returns|description|example|param|throws)
settings.jsdoc.tagNamePreference
type: object
padrão: {}
settings.jsx-a11y
type: object
Configura regras do plugin JSX A11y.
Referência em eslint-plugin-jsx-a11y.
settings.jsx-a11y.attributes
type: Record<string, array>
padrão: {}
Mapa de nomes de atributo para equivalentes DOM. Útil em frameworks não React com nomes diferentes.
Exemplo:
{
"settings": {
"jsx-a11y": {
"attributes": {
"for": ["htmlFor", "for"]
}
}
}
}settings.jsx-a11y.components
type: Record<string, string>
padrão: {}
Mapeie componentes customizados para elementos DOM que as regras devem tratar.
Exemplo:
{
"settings": {
"jsx-a11y": {
"components": {
"Link": "a",
"IconButton": "button"
}
}
}
}settings.jsx-a11y.polymorphicPropName
type: string
Prop opcional usada em componentes polimórficos; regras que precisam de contexto semântico usam isso.
Ex.: com polymorphicPropName as, o elemento
<Box as="h3">Hello</Box>é tratado como h3. Sem isso, segue como Box.
settings.next
type: object
Configura regras do plugin Next.js.
settings.next.rootDir
type: array | string
settings.next.rootDir[n]
type: string
settings.react
type: object
Configura regras do plugin React.
Baseado em eslint-plugin-react.
settings.react.componentWrapperFunctions
type: string[]
padrão: []
Funções que envolvem componentes React e devem ser tratadas como HOCs.
Exemplo:
{
"settings": {
"react": {
"componentWrapperFunctions": ["observer", "withRouter"],
},
},
}settings.react.formComponents
type: array
padrão: []
Componentes usados no lugar de <form>, por exemplo <Formik>.
Exemplo:
{
"settings": {
"react": {
"formComponents": [
"CustomForm",
{ "name": "OtherForm", "formAttribute": "endpoint" },
{ "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
padrão: []
Componentes usados no lugar de <a>, por exemplo <Link>.
Exemplo:
{
"settings": {
"react": {
"linkComponents": [
"HyperLink",
{ "name": "MyLink", "linkAttribute": "to" },
{ "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
padrão: null
Versão React para regras específicas de versão.
Aceita semver (ex.: "18.2.0", "17.0").
Exemplo:
{
"settings": {
"react": {
"version": "18.2.0",
},
},
}settings.vitest
type: object
Configura regras do plugin Vitest.
Referência em eslint-plugin-vitest.
settings.vitest.typecheck
type: boolean
padrão: false
Ativa modo typecheck nas regras Vitest. Quando ligado, algumas regras pulam checagens em describe para cenários com verificação de tipos TypeScript.