できない.dev

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 指定が無視されない を参照。

この記事は役立ちましたか?