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
类型:string
编辑器工具的 Schema URI。
categories
类型: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
类型: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 不可用的环境中,你可以使用此配置:
{
"$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 阶段,不遵循语义化版本控制。
示例:
使用本地插件路径的基本用法。
{
"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 版本。
{
"jsPlugins": ["./custom-plugin.ts"],
"rules": {
"custom/rule-name": "warn"
}
}通过为 JS 插件指定别名,与同名的内置 Rust 插件一起使用。
{
"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 的示例:
{
"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-type 和 require-param-description 规则
settings.jsdoc.ignoreInternal
类型:boolean
默认值:false
用于所有规则,但不适用于 empty-tags 规则
settings.jsdoc.ignorePrivate
类型:boolean
默认值:false
用于所有规则,但不适用于 check-access 和 empty-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 框架很有用。
示例:
{
"settings": {
"jsx-a11y": {
"attributes": {
"for": ["htmlFor", "for"]
}
}
}
}settings.jsx-a11y.components
类型:Record<string, string>
默认值:{}
要让你的自定义组件作为 DOM 元素进行检查,可以提供组件名称到 DOM 元素名称的映射。
示例:
{
"settings": {
"jsx-a11y": {
"components": {
"Link": "a",
"IconButton": "button"
}
}
}
}settings.jsx-a11y.polymorphicPropName
类型:string
一个可选设置,定义你的代码用于创建多态组件的属性。 此设置将用于在需要语义上下文的规则中确定元素类型。
例如,如果你将 polymorphicPropName 设置为 as,那么这个元素:
<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 插件规则。
settings.react.componentWrapperFunctions
类型:string[]
默认值:[]
包装 React 组件的函数,应被视为 HOC。
示例:
{
"settings": {
"react": {
"componentWrapperFunctions": ["observer", "withRouter"],
},
},
}settings.react.formComponents
类型:array
默认值:[]
用作 <form> 替代方案的表单组件,例如 <Formik>。
示例:
{
"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>。
示例:
{
"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")。
示例:
{
"settings": {
"react": {
"version": "18.2.0",
},
},
}settings.vitest
类型:object
配置 Vitest 插件规则。
完整参考请参见 eslint-plugin-vitest 的配置。
settings.vitest.typecheck
类型:boolean
默认值:false
是否为 Vitest 规则启用类型检查模式。 启用时,某些规则将跳过 describe 块的某些检查,以适应 TypeScript 类型检查场景。