ESLint Flat Config
別名: flat config / eslint.config.js / フラットコンフィグ
ESLint v9 で既定となった新しい設定方式。
eslint.config.js / .mjs / .cjs 一本に設定オブジェクトの配列を export し、プラグインも import して直接渡す。
公開: 更新:
定義
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 のように 値として展開 する形だった。
v9.22 からは配列を eslint/config の defineConfig() で包むと、設定オブジェクトに extends を書いて共有設定を取り込める。
v8 系でも v8.23 以降は eslint.config.js を置けば、環境変数なしで flat config が使われる。
移行手順は migration guide(新しいタブで開く) を参照。
よくある誤解
.eslintrc.jsonも併用できる: v9 では読まれない。
残しておくと混乱の元なので削除する。plugins: ["foo"]と書ける: 文字列指定は廃止。importしてオブジェクトでplugins: { foo: pluginFoo }の形に書き換える。
関連
読み込みが効かない症状は Flat Config が読み込まれない、ignore の挙動差は ignore 指定が無視されない を参照。