Next.js 11 が ESLint を組み込みサポート
Next.js 11 で ESLint を Next.js が組み込みでサポートしました。
これで、create-next-app
で新規作成するアプリでは、ESLint に関してもゼロコンフィグで next eslint
とするだけで実行できるようになります。
ただ、ESLint には色々な共有設定 (config) があるわけで、Next.js がデフォルトで設定してくれているもの以外(TypeScript や Prettier 関連)は自分で設定する必要があります。
ここでは、Next.js 11 がデフォルトで提供する .eslintrc
にそれらの設定を追加します。
Next.js 11 デフォルトの ESLint 設定
Next.js 11 が生成する .eslintrc
ファイルは次のようなシンプルなものです。
問題はこれらがどのような共有設定を含んでいるかですが、eslint-config-next のコードを見ると、次のような感じになっています。
React 系の共有設定はここに含まれているので、"extends": ["next"]
だけでカバーできそうです。
公式ドキュメントの ESLint - Base Configuration にも同様の説明が書かれています。
逆に、TypeScript 関連や、Prettier 関連の共有設定は自分で追加しなければいけません。
ESLint 設定を追加する
ここでは、下記のような ESLint extends 設定を手動で追加してやります。
- ESLint 推奨 (
eslint:recommended
) - TypeScript 関連 (
plugin:@typescript-eslint/recommended*
) - Prettier 関連 (
prettier
)
eslint:recommeded
以外は外部パッケージとして提供されているので、先にインストールしておきます。
そして、ESLint 設定ファイルを次のように書き換えてやります。
Yaml 形式の方が記述が楽なので、.eslintrc
を .eslintrc.yml
に置き換えています。
あとは、next lint
で実行すればよさそうですが、プロジェクト内の TypeScript 型情報に関する警告 (plugin:@typescript-eslint/recommended-requiring-type-checking
) を有効にするには、eslint
コマンドを直接実行しないといけないみたいです(next lint
では全ての警告が出ない…)。
いずれにしても、最終的には、package.json
の中で次のような感じで npm-scripts を定義して、yarn lint
(npm run lint
) コマンド一発で各種 Lint ツールをまとめて実行できるようにしておくのがよいです。
上記で使用している run-p
や run-s
は、複数の npm-scripts を並列 or 順次実行するためのコマンドで、npm-run-all
パッケージをインストールすると使えるようになります。
関連記事
- Next.js アプリのディレクトリ構成を考える(Atomic Design と Presentational and Container Components)
- Next.js でハッシュフラグメントを扱う(useHash カスタムフック)
- Next.js で環境変数を扱う (.env, NEXT_PUBLIC, NODE_ENV)
- Next.js のコンポーネント内でクエリ文字列を取得する (next/router, useRouter)
- MUI コンポーネント (v4) に独自のスタイルを設定する (makeStyles)
- Next.js で Material-UI を使う
- ESLint + Prettier の設定方法まとめ