4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ESLint v9.22以降の機能を正しく使う AIと人間のための設定ガイド

Last updated at Posted at 2025-12-01

概要

私の観測範囲では、ESLintの設定をAIに任せると、defineConfig()extendsglobalIgnores()を削除しようとすることがあります。
公式にも記載があり明らかに正しいものなのに、AIがこれらを消そうとするのは問題です。

というわけで、この内容を読ませればAIがESLint v9.22以降の機能を正しく理解できるようになる、という目的でこの記事を書きました。
そのうちAIが最新情報を学習すれば不要になるはずですが、それまでの間、参照用資料として役立てば幸いです。

なぜAIはこれらの設定を消そうとするのか

ESLint v9.0.0(2024年4月リリース)でflat configがデフォルトになった際、一時的にextendsが使えなくなりました。
AIはこの情報を学習しているのか、extendsを削除しようとします。

しかし、ESLint v9.22.0(2025年3月リリース)でextendsが再導入されました。
defineConfig()globalIgnores()も誤って消そうとしてしまうことから鑑みるに、新しい情報+ネットにそこまで情報が落ちていないということで、AIが把握できていないのかもしれません。

ESLint v9.22以降の正しい設定方法

1. defineConfig() - 型安全な設定の基本

defineConfig()は、ESLint v9.22で導入された型安全な設定を実現する関数です。

主な利点

  • TypeScriptの型チェックが効く
  • 後に説明するextendsが利用できるため、冗長なconfig objectを書かなくて済む

正しい使い方

eslint.config.js
import { defineConfig } from "eslint/config";

export default defineConfig([
  {
    files: ["src/**/*.js"],
    rules: {
      semi: "error",
      "prefer-const": "error",
    }
  }
]);

2. extends - 設定の継承を簡単にする

ESLint v9.0.0で削除 → v9.22.0で再導入されました。

再導入された理由

プラグインごとに設定のエクスポート方法が異なり、ユーザーが混乱していたため。

v9.22以前の書き方

// プラグインによって書き方がバラバラで混乱する
export default [
  js.configs.recommended,                       // オブジェクト
  ...tailwind.configs["flat/recommended"],      // 配列(スプレッド必要)
  ...reactPlugin.configs.flat.recommended,      // 配列(スプレッド必要)
];

v9.22以降の統一された書き方

eslint.config.js
import { defineConfig } from "eslint/config";

export default defineConfig([
  {
    files: ["**/*.js"],
    extends: [
      "js/recommended",
      "tailwind/flat/recommended",
      reactPlugin.configs.flat.recommended,
    ]
  }
]);

extendsが受け付ける形式

  • 文字列(プラグイン設定名)
  • オブジェクト(設定オブジェクト)
  • 配列(複数の設定)

3. globalIgnores() - グローバル除外パターンを明示的に

ignoresプロパティは、単独で使うとグローバル除外、他のプロパティと併用するとローカル除外という二重の意味を持っていました。

v9.22で追加された明示的な方法

eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
  // グローバルに除外(全ルールに適用)
  {
    globalIgnores(["dist", "build"]),
  },
  // ローカルな除外(このルールセットのみ)
  {
    ignores: ["tests/*.js"],
    rules: {
      "no-console": "error"
    }
  }
]);

AIに正しく設定を依頼する方法

悪い依頼

ESLintの設定ファイルを作ってください。

良い依頼

ESLint v9.22以降の最新機能(defineConfig、extends)を使ってTypeScriptプロジェクトの設定ファイルを作成してください。
公式ブログ(https://eslint.org/blog/2025/03/flat-config-extends-define-config-global-ignores/)の内容を参考にしてください。

また、この記事のURLをAIに渡すことで、正しい設定を生成してもらえる可能性が高まります。

まとめ

機能 導入バージョン 用途
defineConfig() v9.22.0 型安全な設定、冗長な記載の簡略化
extends v9.22.0(再導入) 統一的な設定継承
globalIgnores() v9.22.0 明示的なグローバル除外

重要なポイント

  1. defineConfig()extendsは削除しないでください
  2. これらはESLint v9.22(2025年3月)で追加された最新機能です
  3. AIがこれらを削除しようとする場合、この記事を参照させてください

参考リンク

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?