Skip to content

設定

Oxlint は初期状態で動作しますが、多くのチームではローカル実行、エディタ、CI の間で整形の一貫性を維持するために、設定ファイル(.oxlintrc.json または oxlint.config.ts)をコミットしています。

このページでは、プロジェクト設定について焦点を当てます:ルール、カテゴリ、プラグイン、オーバーライド、共有設定です。

設定ファイルの作成

現在のディレクトリにスターター設定を生成するには(JSON形式):

sh
oxlint --init

Oxlint は自動的に現在の作業ディレクトリに .oxlintrc.json または oxlint.config.ts があるかを確認します。明示的に設定ファイルを指定することもできます(この場合、ネストされた設定の検索が無効になります):

sh
oxlint -c ./oxlintrc.json
# または
oxlint --config ./oxlintrc.json

注意事項:

  • .oxlintrc.json はコメントをサポートします(jsoncと同様)。
  • 設定形式は ESLint v8 の形式(eslintrc.json)と互換性を意識しています。
  • ディレクトリ内では .oxlintrc.json または oxlint.config.ts のいずれか一方を使用でき、両方を同時に使うことはできません。

最小限の設定例は以下の通りです:

.oxlintrc.json
json
{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "categories": {
    "correctness": "warn"
  },
  "rules": {
    "eslint/no-unused-vars": "error"
  }
}

TypeScript 設定ファイル(oxlint.config.ts

Oxlint は oxlint.config.ts という名前の TypeScript 設定ファイルもサポートしています。

oxlint.config.ts
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  categories: {
    correctness: "warn",
  },
  rules: {
    "eslint/no-unused-vars": "error",
  },
});

注意事項:

  • ファイル名は oxlint.config.ts でなければなりません(--config で渡す場合も含む)。
  • デフォルトエクスポートはオブジェクトでなければならず、型付けのために defineConfig で囲む必要があります。
  • TypeScript 設定ファイルは、ノードベースの oxlint パッケージ(JSランタイム)が必要です。スタンドアロンバイナリを使用している場合は、代わりに .oxlintrc.json を使用してください。
  • TypeScript 設定ファイルは、TypeScript を実行できるノードランタイムが必要です。

設定ファイルの形式

設定ファイルは、次のいずれかの形式です:

  • オブジェクト形式の JSON(.oxlintrc.json
  • デフォルトエクスポートが設定オブジェクトである TypeScript モジュール(oxlint.config.ts

最も一般的なトップレベルフィールドは以下の通りです:

  • rules:ルールの有効・無効化、重大度の設定、ルールオプションの設定。
  • categories:類似した意図を持つルールのグループを有効化。
  • plugins:追加のルールを提供する組み込みプラグインを有効化。
  • jsPlugins:JavaScript プラグインを構成(実験的)。
  • overrides:異なるファイルパターンに対して異なる設定を適用。
  • extends:他のファイルから設定を継承。
  • ignorePatterns:設定ファイルから追加のファイルを無視。
  • env:一般的な環境用の事前定義されたグローバル変数を有効化。
  • globals:カスタムグローバル変数を読み取り専用または書き込み可能として宣言。
  • settings:複数のルールで共有されるプラグイン全体の設定。

完全なフィールドリストについては、設定ファイルリファレンス を参照してください。

ルールの設定

ルールは rules の下で設定されます。

ルール値は以下のいずれかです:

  • 重大度("off""warn""error")、
  • または [重大度, オプション] の配列

ルール名がユニークな場合、プラグイン接頭辞なしで設定できます。たとえば、no-consoleeslint/no-console と同じ意味です。

.oxlintrc.json
json
{
  "rules": {
    "no-alert": "error",
    "oxc/approx-constant": "warn",
    "no-plusplus": "off"
  }
}

重大度の値

Oxlint は ESLint 形式の重大度を受け入れます:

  • ルールを許可:"off""allow"
  • ルールに対して警告:"warn"
  • ルールに対してエラー:"error""deny"

ルールオプション

ルールオプションを設定するには、配列を使用します:

.oxlintrc.json
json
{
  "rules": {
    "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }]
  }
}

利用可能なすべてのルールおよびその設定オプションについては、ルールリファレンス を参照してください。

CLI から重大度をオーバーライド

すぐに試すための便利な方法として、コマンドラインから重大度を調整できます:

  • -A / --allow
  • -W / --warn
  • -D / --deny

引数は左から右に適用されます:

sh
oxlint -D no-alert -W oxc/approx-constant -A no-plusplus

カテゴリーでルールのグループを有効化

カテゴリを使うと、類似した意図を持つルールのグループを有効または無効にできます。デフォルトでは、Oxlint は correctness カテゴリのルールを有効にしています。

categories を使ってカテゴリを設定します:

.oxlintrc.json
json
{
  "categories": {
    "correctness": "error",
    "suspicious": "warn",
    "pedantic": "off"
  }
}

利用可能なカテゴリには以下があります:

  • correctness:明らかに誤りまたは無駄なコード
  • suspicious:誤りまたは無駄である可能性が高いコード
  • pedantic:偽陽性が発生する可能性のある非常に厳格なルール
  • perf:実行時パフォーマンスを向上させる目的のルール
  • style:習慣的かつ一貫性のあるスタイルルール
  • restriction:特定のパターンや機能を禁止するルール
  • nursery:開発中のルールで、変更される可能性があります

同じ -A-W-D オプションを使って、CLI でもカテゴリを変更できます:

sh
oxlint -D correctness -D suspicious

プラグインの設定

プラグインは利用可能なルールのセットを拡張します。

Oxlint は、多数の一般的なプラグインを、Rust でネイティブにサポートしています。これにより、大きな JavaScript 依存関係ツリーなしで広範なルールカバーが可能です。詳細は ネイティブプラグイン を参照してください。

plugins を使ってプラグインを設定します。plugins を設定すると、デフォルトのプラグインセットが上書きされるため、有効にしておきたいすべての項目を含める必要があります:

.oxlintrc.json
json
{
  "plugins": ["unicorn", "typescript", "oxc"]
}

すべてのデフォルトプラグインを無効にするには:

.oxlintrc.json
json
{
  "plugins": []
}

プラグインの詳細や --import-plugin などの CLI フラグについては、ネイティブプラグイン を参照してください。

JavaScript プラグインの設定(実験的)

Oxlint は jsPlugins を通じて、JavaScript プラグインもサポートしています。これは既存の ESLint プラグインとの互換性や高度な統合を目的としています。

注意事項:

  • JavaScript プラグインは実験的であり、semver の対象ではありません。

JavaScript プラグインは文字列として宣言できますし、エイリアスを持つオブジェクトとしても宣言できます:

.oxlintrc.json
json
{
  "jsPlugins": [
    "eslint-plugin-playwright",
    { "name": "my-eslint-react", "specifier": "eslint-plugin-react" }
  ]
}

一部のプラグイン名は、それらがネイティブに Rust で実装されているため(例:reactunicorntypescriptoxcimportjestvitestjsx-a11ynextjs)予約されています。予約済みプラグインの JavaScript 版が必要な場合は、衝突を避けるために独自の name を割り当ててください。

詳細については、JavaScript プラグイン を参照してください。

ファイルパターンごとに設定を適用

overrides を使って、テストファイル、スクリプト、またはタイプスクリプト専用のパスなど、異なるファイルに対して異なる設定を適用できます。

overrides はオブジェクトの配列です。各オーバーライドには以下の項目を含められます:

  • files:globパターン
  • rules:ルール設定(トップレベルの rules と同じ構造)
  • env:環境設定(トップレベルの env と同じ構造)
  • globals:グローバル設定(トップレベルの globals と同じ構造)
  • plugins:オプションで、このオーバーライドで有効にするプラグインを変更
  • jsPlugins:このオーバーライド用の JavaScript プラグイン(実験的)

例:

.oxlintrc.json
json
{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "rules": {
    "no-console": "error"
  },
  "overrides": [
    {
      "files": ["scripts/*.js"],
      "rules": {
        "no-console": "off"
      }
    },
    {
      "files": ["**/*.{ts,tsx}"],
      "plugins": ["typescript"],
      "rules": {
        "typescript/no-explicit-any": "error"
      }
    },
    {
      "files": ["**/test/**"],
      "plugins": ["jest"],
      "env": {
        "jest": true
      },
      "rules": {
        "jest/no-disabled-tests": "off"
      }
    }
  ]
}

共有設定を継承

extends を使って、他の設定ファイルから設定を継承できます。

extends 内のパスは、extends を宣言している設定ファイルからの相対パスとして解決されます。設定は最初から最後までマージされ、後ろにあるエントリが前にあるものを上書きします。

.oxlintrc.json
json
{
  "extends": ["./configs/base.json", "./configs/frontend.json"]
}
oxlint.config.ts
ts
import baseConfig from "./configs/base.ts";
import frontendConfig from "./configs/frontend.ts";
import { defineConfig } from "oxlint";

export default defineConfig({
  extends: [baseConfig, frontendConfig],
});

環境とグローバル変数の設定

env を使って、ブラウザや node などの一般的な環境用の事前定義されたグローバル変数を有効化します。

globals は、プロジェクト固有のグローバル変数を宣言し、読み取り専用または書き込み可能としてマークしたり、通常は存在するはずのグローバル変数を無効化できます。

.oxlintrc.json
json
{
  "env": {
    "es6": true
  },
  "globals": {
    "MY_GLOBAL": "readonly",
    "Promise": "off"
  }
}

globals は以下の値を受け入れます:

  • "readonly" または "readable" または false
  • "writable" または "writeable" または true
  • "off" でグローバル変数を無効化

プラグインの設定

settings を使って、複数のルールで共有されるプラグイン全体の設定を指定します。

例(モノレポ + React + jsx-a11y):

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

次のステップ