Skip to content

ネストされた設定ファイル

Oxlint は同一リポジトリ内で複数の設定ファイルを使用できます。自動的に名前が .oxlintrc.json または oxlint.config.ts である設定ファイルを検出し、ファイルがディレクトリツリー内でどの位置にあるかに基づいて適用します。

これは、パッケージごとに独自の設定が必要になるモノリポ(monorepo)において、共通のベースラインを維持しつつ有用です。

ファイルやフォルダを除外するだけの場合、代わりに 無視リスト を使用してください。

動作方法

各チェック対象ファイルに対して、Oxlint はそのファイルに最も近い(.oxlintrc.json または oxlint.config.ts)設定ファイルを使用します。

以下の構造を想定します:

my-project/
├── .oxlintrc.json
├── src/
│   ├── index.js
├── package1/
│   ├── oxlint.config.ts
│   └── index.js
└── package2/
    ├── .oxlintrc.json
    └── index.js

設定ファイルの解決は次の通りです:

  • src/index.jsmy-project/.oxlintrc.json を使用
  • package1/index.jsmy-project/package1/oxlint.config.ts を使用
  • package2/index.jsmy-project/package2/.oxlintrc.json を使用

期待される動作

設定ファイルは自動的にマージされません。子ディレクトリ内の設定ファイルは親ディレクトリの設定ファイルに影響を与えません。

コマンドラインオプションは、親または子ディレクトリからのものに関係なく、設定ファイルを上書きします。

-c--config で明示的に設定ファイルの場所を指定すると、ネストされた設定ファイルの検索が無効になり、Oxlint はその単一の設定ファイルのみを使用します。

また、--disable-nested-config フラグでネストされた設定を無効にすることもできます。

モノリポのパターン:extends でベース設定を共有

モノリポでは、ルートに一つの共有ベースラインを持ちつつ、パッケージごとの小さなカスタマイズを行うことがよくあります。

この目的のために、ルートに .oxlintrc.json を保持し、パッケージ用の設定ファイルがそれを継承(extends)するようにします。

my-project/.oxlintrc.json
json
{
  "rules": {
    "no-debugger": "error"
  }
}
my-project/package1/.oxlintrc.json
json
{
  "extends": ["../.oxlintrc.json"],
  "rules": {
    "no-console": "off"
  }
}

これにより、共有ベースラインを一つの場所に保ちつつ、パッケージ用の設定ファイルを小さくかつ焦点を絞ったものにすることができます。

設定ファイルの継承

extends を使って、設定ファイルは他のファイルの設定を再利用できます。値は、その設定ファイルから相対的に解決されるファイルパスの配列です。

継承対象のファイルには任意の名前を付けることができます。.oxlintrc.json である必要はありません。有効な JSON 形式の設定ファイルであれば問題ありません。

例:

oxlint-typescript.json
json
{
  "plugins": ["typescript"],
  "rules": {
    "typescript/no-explicit-any": "error"
  }
}
.oxlintrc.json
json
{
  "extends": ["oxlint-typescript.json"],
  "rules": {
    "no-unused-vars": "warn"
  }
}

拡張できるプロパティは限定的です。サポートされているプロパティは次の通りです:

  • rules
  • plugins
  • overrides