Skip to content

Oxlint 配置文件

此配置与 ESLint v8 的配置模式(eslintrc.json)保持一致。

用法:oxlint -c oxlintrc.json

示例

.oxlintrc.json

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

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

类型:string

编辑器工具的 Schema URI。

categories

类型:object

一次性配置整个规则类别。

以这种方式启用或禁用的规则将被 rules 字段中的单独规则覆盖。

示例

json
{
  "$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

类型: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

类型:string[]

此配置文件继承的配置文件路径。文件路径相对于包含 extends 属性的配置文件的位置进行解析。配置文件从第一个到最后一个进行合并,最后一个文件覆盖之前的文件。

globals

类型:Record<string, string>

添加或移除全局变量。

对于每个全局变量,将相应的值设置为 "writable" 以允许变量被覆盖,或设置为 "readonly" 以禁止覆盖。

可以通过将值设置为 "off" 来禁用全局变量。例如,在大多数 Es2015 全局变量可用但 Promise 不可用的环境中,你可以使用此配置:

json
{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "env": {
    "es6": true
  },
  "globals": {
    "Promise": "off"
  }
}

你也可以使用 "readable"false 来表示 "readonly",使用 "writeable"true 来表示 "writable"

ignorePatterns

类型:string[]

默认值:[]

检查时要忽略的 glob 模式。这些模式相对于配置文件路径进行解析。

jsPlugins

类型:array

JS 插件,允许在 Oxlint 中使用 ESLint 插件。

文档中了解更多关于 JS 插件的信息。

注意:JS 插件处于 alpha 阶段,不遵循语义化版本控制。

示例:

使用本地插件路径的基本用法。

json
{
  "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.js 版本,不支持 TypeScript 插件。请使用 JavaScript 插件或升级 Node 版本。

json
{
  "jsPlugins": ["./custom-plugin.ts"],
  "rules": {
    "custom/rule-name": "warn"
  }
}

通过为 JS 插件指定别名,与同名的内置 Rust 插件一起使用。

json
{
  "plugins": ["import"],
  "jsPlugins": [{ "name": "import-js", "specifier": "eslint-plugin-import" }],
  "rules": {
    "import/no-cycle": "error",
    "import-js/no-unresolved": "warn"
  }
}

jsPlugins[n]

类型:object | string

jsPlugins[n].name

类型:string

插件的自定义名称/别名。

注意:以下插件名称是保留的,因为它们在 oxlint 中以 Rust 原生实现,不能用于 JS 插件:

  • react(包括 react-hooks)
  • unicorn
  • typescript(包括 @typescript-eslint)
  • oxc
  • import(包括 import-x)
  • jsdoc
  • jest
  • vitest
  • jsx-a11y
  • nextjs
  • react-perf
  • promise
  • node
  • vue
  • eslint

如果你需要使用这些插件中任何一个的 JavaScript 版本,请提供自定义别名以避免冲突。

jsPlugins[n].specifier

类型:string

插件的路径或包名

options

类型:object

检查器的选项。

options.denyWarnings

类型:boolean

确保警告产生非零退出码。

等同于在 CLI 上传递 --deny-warnings

options.maxWarnings

类型:integer

指定警告阈值。如果警告超过此值,则以错误状态退出。

等同于在 CLI 上传递 --max-warnings

options.reportUnusedDisableDirectives

类型:"allow" | "off" | "warn" | "error" | "deny" | integer

报告未使用的禁用指令(例如 // oxlint-disable-line// eslint-disable-line)。

等同于在 CLI 上传递 --report-unused-disable-directives-severity。 当两者都设置时,CLI 标志优先于此值。 仅在根配置文件中支持。

options.respectEslintDisableDirectives

类型:boolean

oxlint 是否应该遵循 eslint-disable*eslint-enable* 指令,以及其原生的 oxlint-* 指令。

默认为 true。 仅在根配置文件中支持。

options.typeAware

类型:boolean

启用需要类型信息的规则。

等同于在 CLI 上传递 --type-aware

注意,这需要安装 oxlint-tsgolint 包。

options.typeCheck

类型:boolean

启用实验性类型检查(包括 TypeScript 编译器诊断)。

等同于在 CLI 上传递 --type-check

注意,这需要安装 oxlint-tsgolint 包。

overrides

类型:array

overrides[n]

类型:object

overrides[n].env

类型:object

环境启用和禁用全局变量集合。

overrides[n].files

类型:string[]

一组 glob 模式。

overrides[n].globals

类型:object

启用或禁用特定全局变量。

overrides[n].jsPlugins

类型:array

此覆盖的 JS 插件,允许在 Oxlint 中使用 ESLint 插件。

文档中了解更多关于 JS 插件的信息。

注意:JS 插件处于 alpha 阶段,不遵循语义化版本控制。

overrides[n].jsPlugins[n]

类型:object | string

overrides[n].jsPlugins[n].name

类型:string

插件的自定义名称/别名。

注意:以下插件名称是保留的,因为它们在 oxlint 中以 Rust 原生实现,不能用于 JS 插件:

  • react(包括 react-hooks)
  • unicorn
  • typescript(包括 @typescript-eslint)
  • oxc
  • import(包括 import-x)
  • jsdoc
  • jest
  • vitest
  • jsx-a11y
  • nextjs
  • react-perf
  • promise
  • node
  • vue
  • eslint

如果你需要使用这些插件中任何一个的 JavaScript 版本,请提供自定义别名以避免冲突。

overrides[n].jsPlugins[n].specifier

类型:string

插件的路径或包名

overrides[n].plugins

类型:array

默认值:null

可选地更改此覆盖启用的插件。省略时,使用基础配置的插件。

overrides[n].plugins[n]

类型:"eslint" | "react" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "jest" | "vitest" | "jsx-a11y" | "nextjs" | "react-perf" | "promise" | "node" | "vue"

overrides[n].rules

类型:object

参见 Oxlint 规则

plugins

类型:array

默认值:null

Oxlint 启用的内置插件。 你可以在网站上查看可用插件列表。

注意:设置 plugins 字段将覆盖基础插件集。 plugins 数组应反映你想要使用的所有插件。

plugins[n]

类型:"eslint" | "react" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "jest" | "vitest" | "jsx-a11y" | "nextjs" | "react-perf" | "promise" | "node" | "vue"

rules

类型:object

参见 Oxlint 规则

settings

类型:object

配置检查器插件的行为。

以下是你在 monorepo 中使用 Next.js 的示例:

json
{
  "settings": {
    "next": {
      "rootDir": "apps/dashboard/"
    },
    "react": {
      "linkComponents": [
        {
          "name": "Link",
          "linkAttribute": "to"
        }
      ]
    },
    "jsx-a11y": {
      "components": {
        "Link": "a",
        "Button": "button"
      }
    }
  }
}

settings.jest

类型:object

配置 Jest 插件规则。

完整参考请参见 eslint-plugin-jest 的配置。

settings.jest.version

类型:integer | string

默认值:null

Jest 版本 — 接受数字(29)或语义版本字符串("29.1.0""v29.1.0"),仅存储主版本号。

WARNING

使用此配置将覆盖 no-deprecated-functions 的配置集。

settings.jsdoc

类型:object

settings.jsdoc.augmentsExtendsReplacesDocs

类型:boolean

默认值:false

仅用于 require-(yields|returns|description|example|param|throws) 规则

settings.jsdoc.exemptDestructuredRootsFromChecks

类型:boolean

默认值:false

仅用于 require-param-typerequire-param-description 规则

settings.jsdoc.ignoreInternal

类型:boolean

默认值:false

用于所有规则,但不适用于 empty-tags 规则

settings.jsdoc.ignorePrivate

类型:boolean

默认值:false

用于所有规则,但不适用于 check-accessempty-tags 规则

settings.jsdoc.ignoreReplacesDocs

类型:boolean

默认值:true

仅用于 require-(yields|returns|description|example|param|throws) 规则

settings.jsdoc.implementsReplacesDocs

类型:boolean

默认值:false

仅用于 require-(yields|returns|description|example|param|throws) 规则

settings.jsdoc.overrideReplacesDocs

类型:boolean

默认值:true

仅用于 require-(yields|returns|description|example|param|throws) 规则

settings.jsdoc.tagNamePreference

类型:object

默认值:{}

settings.jsx-a11y

类型:object

配置 JSX A11y 插件规则。

完整参考请参见 eslint-plugin-jsx-a11y 的配置。

settings.jsx-a11y.attributes

类型:Record<string, array>

默认值:{}

属性名称到其 DOM 等效项的映射。 这对于使用不同属性名称的非 React 框架很有用。

示例:

json
{
  "settings": {
    "jsx-a11y": {
      "attributes": {
        "for": ["htmlFor", "for"]
      }
    }
  }
}

settings.jsx-a11y.components

类型:Record<string, string>

默认值:{}

要让你的自定义组件作为 DOM 元素进行检查,可以提供组件名称到 DOM 元素名称的映射。

示例:

json
{
  "settings": {
    "jsx-a11y": {
      "components": {
        "Link": "a",
        "IconButton": "button"
      }
    }
  }
}

settings.jsx-a11y.polymorphicPropName

类型:string

一个可选设置,定义你的代码用于创建多态组件的属性。 此设置将用于在需要语义上下文的规则中确定元素类型。

例如,如果你将 polymorphicPropName 设置为 as,那么这个元素:

jsx
<Box as="h3">Hello</Box>

将被视为 h3。如果未设置,此组件将被视为 Box

settings.next

类型:object

配置 Next.js 插件规则。

settings.next.rootDir

类型:array | string

settings.next.rootDir[n]

类型:string

settings.react

类型:object

配置 React 插件规则。

源自 eslint-plugin-react

settings.react.componentWrapperFunctions

类型:string[]

默认值:[]

包装 React 组件的函数,应被视为 HOC。

示例:

jsonc
{
  "settings": {
    "react": {
      "componentWrapperFunctions": ["observer", "withRouter"],
    },
  },
}

settings.react.formComponents

类型:array

默认值:[]

用作 <form> 替代方案的表单组件,例如 <Formik>

示例:

jsonc
{
  "settings": {
    "react": {
      "formComponents": [
        "CustomForm",
        // OtherForm 被视为表单组件,并有一个 endpoint 属性
        { "name": "OtherForm", "formAttribute": "endpoint" },
        // 允许在必要时指定多个属性
        { "name": "Form", "formAttribute": ["registerEndpoint", "loginEndpoint"] },
      ],
    },
  },
}
settings.react.formComponents[n]

类型:object | string

settings.react.formComponents[n].attribute

类型:string

settings.react.formComponents[n].name

类型:string

settings.react.linkComponents

类型:array

默认值:[]

用作 <a> 替代方案的链接组件,例如 <Link>

示例:

jsonc
{
  "settings": {
    "react": {
      "linkComponents": [
        "HyperLink",
        // 对于使用 `href` 以外属性名的组件,使用 `linkAttribute`
        { "name": "MyLink", "linkAttribute": "to" },
        // 允许在必要时指定多个属性
        { "name": "Link", "linkAttribute": ["to", "href"] },
      ],
    },
  },
}
settings.react.linkComponents[n]

类型:object | string

settings.react.linkComponents[n].attribute

类型:string

settings.react.linkComponents[n].name

类型:string

settings.react.version

类型:string

默认值:null

用于版本特定规则的 React 版本。

接受语义化版本(例如,"18.2.0"、"17.0")。

示例:

jsonc
{
  "settings": {
    "react": {
      "version": "18.2.0",
    },
  },
}

settings.vitest

类型:object

配置 Vitest 插件规则。

完整参考请参见 eslint-plugin-vitest 的配置。

settings.vitest.typecheck

类型:boolean

默认值:false

是否为 Vitest 规则启用类型检查模式。 启用时,某些规则将跳过 describe 块的某些检查,以适应 TypeScript 类型检查场景。