Skip to content

Oxlint 設定ファイル

この設定は ESLint v8 の設定スキーマ(eslintrc.json)と整合性を持っています。

使用方法: oxlint -c oxlintrc.json --import-plugin

メモ

.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"
      }
    }
  ]
}

$schema

型: string

エディターツールのためのスキーマ 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>

グローバル変数を事前に定義します。

環境は、事前に定義されるグローバル変数を指定します。 利用可能な環境および各環境が提供する内容については、ESLint の環境一覧 を参照してください。

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[]

デフォルト: []

リント処理時に無視するパターン。これらのパターンは設定ファイルのパスからの相対パスで解決されます。

jsPlugins

型: array

JS プラグイン。Oxlint で ESLint プラグインを使用できるようにします。

詳細は ドキュメント を参照してください。

メモ: JS プラグインは実験的であり、semver に準拠していません。

例:

ローカルプラグインパスを使った基本的な使用法。

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

同じ名前の構内ルスプラグインと組み合わせて、名前付きエイリアスを使って、名前が重複しないようにする方法。

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

プラグインのパスまたはパッケージ名

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 を使用している場合の例:

json
{
  "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 フレームワークで異なる属性名を使用する場合に便利です。

例:

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

ポリモーフィックコンポーネントを作成するためにコードで使用するプロパティを定義するオプション設定。この設定は、意味的なコンテキストが必要なルールで要素タイプを判断するために使用されます。

たとえば、polymorphicPropNameas を設定した場合、次の要素:

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 のバージョン。

semver バージョンを受け入れます(例: "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 の型チェックシナリオに対応します。