Oxlint 設定ファイル
この設定は ESLint v8 の設定スキーマ(eslintrc.json)と整合性を持っています。
使用方法: oxlint -c oxlintrc.json --import-plugin
メモ
.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"
}
}
]
}$schema
型: string
エディターツールのためのスキーマ 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>
グローバル変数を事前に定義します。
環境は、事前に定義されるグローバル変数を指定します。 利用可能な環境および各環境が提供する内容については、ESLint の環境一覧 を参照してください。
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[]
デフォルト: []
リント処理時に無視するパターン。これらのパターンは設定ファイルのパスからの相対パスで解決されます。
jsPlugins
型: array
JS プラグイン。Oxlint で ESLint プラグインを使用できるようにします。
詳細は ドキュメント を参照してください。
メモ: JS プラグインは実験的であり、semver に準拠していません。
例:
ローカルプラグインパスを使った基本的な使用法。
{
"jsPlugins": ["./custom-plugin.js"],
"rules": {
"custom/rule-name": "warn"
}
}同じ名前の構内ルスプラグインと組み合わせて、名前付きエイリアスを使って、名前が重複しないようにする方法。
{
"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
プラグインのパスまたはパッケージ名
overrides
型: array
overrides[n]
型: object
overrides[n].env
型: object
環境はグローバル変数のグループを有効または無効にします。
overrides[n].files
型: string[]
グロブパターンの集合。
overrides[n].globals
型: object
特定のグローバル変数を有効または無効にする。
overrides[n].jsPlugins
型: array
このオーバーライド用の JS プラグイン。Oxlint で ESLint プラグインを使用できるようにします。
詳細は ドキュメント を参照してください。
メモ: JS プラグインは実験的であり、semver に準拠していません。
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
リントプラグインの動作を設定します。
モノレポで Next.js を使用している場合の例:
{
"settings": {
"next": {
"rootDir": "apps/dashboard/"
},
"react": {
"linkComponents": [
{
"name": "Link",
"linkAttribute": "to"
}
]
},
"jsx-a11y": {
"components": {
"Link": "a",
"Button": "button"
}
}
}
}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 プラグインルールを設定します。
eslint-plugin-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 のバージョン。
semver バージョンを受け入れます(例: "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 の型チェックシナリオに対応します。
