できない.dev

ESLint Flat Config

別名: flat config / eslint.config.js / フラットコンフィグ

ESLint v9 で既定となった新しい設定方式。eslint.config.js / .mjs / .cjs 一本に設定オブジェクトの配列を export し、プラグインも import して直接渡す。

#eslint#flat-config#config#v9#migration

公開:

定義

Flat Config は ESLint v9 で既定となった新しい設定方式。
プロジェクトルートの eslint.config.js / eslint.config.mjs / eslint.config.cjs に、設定オブジェクトの配列を export する。
従来の .eslintrc.*.eslintignore を 1 ファイルに統合し、プラグインは import してオブジェクトとして直接渡す形に変わった。

詳細

配列の各要素は files / ignores / plugins / rules / languageOptions を持つ独立した設定単位で、後ろに書いたものほど優先されるマージ規則を採る。ignores 単独のオブジェクトはグローバル ignore として作用する。extends のような暗黙的合成は廃止され、必要な設定は js.configs.recommended のように 値として展開 する形になった。
v8 系で先取りするには環境変数 ESLINT_USE_FLAT_CONFIG=true を付ける。
移行手順は migration guide を参照。

よくある誤解

  • .eslintrc.json も併用できる: v9 では読まれない。
    残しておくと混乱の元なので削除する。
  • plugins: ["foo"] と書ける: 文字列指定は廃止。import してオブジェクトで plugins: { foo: pluginFoo } の形に書き換える。

関連

読み込みが効かない症状は Flat Config が読み込まれない、ignore の挙動差は ignore 指定が無視されない を参照。