ESLintrc ジェネレーター

次へ

このジェネレーターは、ブラウザかNodeの環境、TypeScriptサポート、Reactサポートという4つの選択肢から、すぐ使える.eslintrc.json設定を作成します。eslint:recommended、選択に応じたTypeScriptまたはReactのプラグイン、そして妥当なルールのオーバーライドを組み込むので、結果をそのままプロジェクトに貼り付けられます。

ESLint設定を生成する方法

  1. 1

    環境を選ぶ

    コードがブラウザ、Node.js、またはその両方で動くかを選びます。ジェネレーターは対応する`env`の項目と`es2022`を設定します。

  2. 2

    TypeScriptを有効にする

    TypeScriptにチェックを入れると、`@typescript-eslint/parser`と推奨のTypeScriptプラグインが追加されます。

  3. 3

    Reactを有効にする

    Reactにチェックを入れると、推奨プリセット付きの`eslint-plugin-react`が追加されます。

  4. 4

    生成する

    ボタンをクリックすると、読みやすく整形されたJSONの設定が作成されます。

  5. 5

    プロジェクトにコピーする

    出力を`.eslintrc.json`に貼り付け、設定が参照するプラグインをインストールします。

生成される設定の内容

ジェネレーターは常にeslint:recommendedから始め、選択内容に応じた項目だけを追加します。

  • browsernodeを含むenv、さらにes2022
  • TypeScriptがオンの場合は@typescript-eslint/parserplugin:@typescript-eslint/recommended
  • Reactがオンの場合はplugin:react/recommended
  • warnに設定されたno-consoleno-unused-vars

出力は従来の.eslintrc.json形式のシンプルなJSONオブジェクトで、貼り付けて独自のルールを追加できます。

フラット設定と従来設定の比較

ESLint 9では.eslintrc.*形式が非推奨となり、フラット設定(eslint.config.js)が推奨になりました。主な違いは次のとおりです。

観点 従来(.eslintrc) フラット(eslint.config.js)
形式 JSON、YAML、CommonJS ESMまたはCommonJSのJavaScriptモジュール
継承 extends: ["plugin:react/recommended"] 配列へ展開:...reactPlugin.configs.recommended
オーバーライド globパターンを使うoverrides配列 エクスポート配列内の複数のオブジェクト
グローバル変数 env: { browser: true } 明示的なインポートを伴うlanguageOptions.globals
除外 .eslintignoreファイル 設定配列内のignoresフィールド

新規プロジェクトはフラット設定を使うべきです。既存プロジェクトは10.x系まで従来設定のままでも構いませんが、移行を推奨します。

プラグインのエコシステム

典型的なReact/TSプロジェクトのプラグイン。

@typescript-eslint/eslint-plugin
@typescript-eslint/parser
eslint-plugin-react
eslint-plugin-react-hooks
eslint-plugin-jsx-a11y
eslint-plugin-import
eslint-config-prettier

そこそこ意見の強い1つの構成でも6パッケージです。ジェネレーターは選択したプラグインだけを追加するので、設定が参照するものだけをインストールすれば済みます。

Prettierとの共存

Prettierは整形を担当し、ESLintは整形以外の正しさとスタイルを担当します。競合を避けるには、次のようにします。

  1. eslint-config-prettierをインストールし、extends/configの最後の項目として追加します。
  2. これはPrettierの出力と競合するすべてのESLintルールをオフにします。
  3. Prettierは別途実行します(エディタの保存時、pre-commitフック、CI)。

新規プロジェクトではeslint-plugin-prettierは使わないでください。ESLintの中でPrettierを実行するため、ESLintを遅くします。2つのツールは分けましょう。

ルール調整のヒント

  • 緩く始めて、徐々に厳しくする。 エラーより先に警告を有効にします。
  • テスト用にオーバーライド。 テストファイルではno-unused-expressionsを緩め、Jestのグローバルを使えるようにすることがよくあります。
  • スクリプト用にオーバーライド。 ビルドスクリプトでは、env: nodeをグローバルに追加せずにNodeのグローバルが必要になることがあります。
  • オーバーライドにコメントを。 どのルールのオーバーライドにも、理由を説明するコメントを付ける価値があります。

エディタに合わせた設定

VS CodeにはESLint拡張機能のインストールと設定が必要です。保存時の自動修正のために、ワークスペース設定に次を追加してください。

{
  "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" },
  "eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact"]
}

よくある質問

新規プロジェクトにはフラット設定(eslint.config.js)です。このジェネレーターは従来の.eslintrc.json形式を出力しますが、これはESLintがレガシーモードでネイティブに読み込める形式です。移行時に何が変わるかは上の比較表を参照してください。

TypeScriptを使っているなら、はい。@typescript-eslint/parser@typescript-eslint/eslint-pluginが、TypeScriptを理解したリンティングを有効にします。型を考慮したルール(構文だけでなく)には、さらにパーサーにproject: './tsconfig.json'を設定してください。

たいていはCIで開発依存が不足しているためです。@typescript-eslint/*、プラグイン、ESLintのバージョンがローカルとCIで一致していることを確認してください。lockfileを尊重するため、CIではnpm installではなくnpm ciを使います。

いいえ。選択内容は設定を生成するためだけに使われ、保存もされず、第三者と共有されることもありません。

関連ツール

このツールは他の言語でも利用できます