logo

ESLintのFlatConfigの設定管理のコツ

2025-09-13
a month ago

開発環境

  • Node.js v18以上
  • ESLint v9以降(Flat Config対応版)
  • VSCode + ESLint拡張機能

前提

ESLintはv9から「Flat Config」という新しい設定形式が導入され、従来の.eslintrcは非推奨になりました。

Flat Configではeslint.config.jsにすべての設定を記述しますが、単純に書き連ねると肥大化して分かりにくくなります。

そこで「用途ごとに分割し、順序を意識して組み立てる」ことが大切です。

本題

1. 用途別にconfigを分ける

Flat Configでは、設定をオブジェクトとして用途ごとに分けるのがおすすめです。

  • ベース設定: 全体で共通のルール
  • TypeScript設定: 型チェックやtsconfig依存のルール
  • React設定: JSXやHooksに関するルール
  • テスト設定: JestやVitestなどテスト環境に関するルール

こうすることで「このルールは何のためのものか」が明確になり、管理しやすくなります。

// eslint.config.js
const baseConfig = {
  name: "base",
  files: ["**/*.js"],
  rules: {
    semi: ["error", "always"],
  },
};

const tsConfig = {
  name: "typescript",
  files: ["**/*.ts", "**/*.tsx"],
  rules: {
    "@typescript-eslint/no-unused-vars": "error",
  },
};

const reactConfig = {
  name: "react",
  files: ["**/*.tsx"],
  rules: {
    "react/jsx-uses-react": "off",
  },
};

export default [baseConfig, tsConfig, reactConfig];

2. 配列の順序が大事

設定は配列としてまとめますが、後ろのものが前を上書きする仕様になっています。

上記の例では、

  1. baseConfig が適用され、
  2. tsConfig がその内容を補強し、
  3. reactConfig がさらに上書きする

という順序です。

もし順番を変えてしまうと、React専用のルールがTypeScript設定に潰される、といったトラブルが起こり得ます。

用途ごとに分けることと同じくらい、並べる順序の設計が重要です。

3. nameを付けてConfig Inspectorで確認する

Flat Configの各オブジェクトにはnameプロパティを付けられます。

このnameを設定しておくと、ESLintのConfig Inspectorで実際にどのconfigがどのファイルに効いているかを画面上で確認でき、デバッグや共有が格段に楽になります。

## ツールダウンロード
$ pnpx @eslint/config-inspector
## コマンドで起動
$ pnpm eslint --inspect-config

たとえば、上記の例では「base」「typescript」「react」と名前を付けているため、Config Inspector上でそれぞれの適用範囲を視覚的に把握できます。

さいごに

Flat Configは従来よりシンプルかつ柔軟ですが、自由に書けるがゆえに混乱しやすい面もあります。

そこで大事なのは以下の3点です。

  • 用途ごとにconfigを分割する
  • 配列の順序を意識して組み立てる
  • nameを付けてConfig Inspectorで確認できるようにする

この運用ルールを取り入れることで、Flat Configをチーム開発でも安心して管理できるようになります。

参照