ESLintを設定するときに 超絶 役立った記事【2023年11月】

ReactとNext.jsのプロジェクトを初期設定して、個人開発を続けてたんだけど、GithubでPull Request作っても誰もレビューしてくれないから、Linterを設定して自動でレビューしてもらうことにした。

まずは、Linterである ESLint とコードスタイルを整備する Prettier を設定するぞ!と始めた。

前提:プロジェクト構成

  1. react ^18
  2. next 14.0.0

Next.js で Server Component を使って、 Prisma も使う感じ。

そして TypeScript で実装している。

Next.js をセットアップした時点で、 .eslintrc.json が作成されていた。 ESLintをセットアップするときに削除した!(後述)

{
  "extends": "next/core-web-vitals"
}

1. ESLint を設定する

まずは ESLint の公式ガイドをみて導入した。

Getting Started with ESLint - ESLint - Pluggable JavaScript Linter

npm init @eslint/config

.eslintrc.js が作成された(あとで拡張子を .cjs にしたぞ)

いろいろエラーが発生したので、こちらの記事を読みながらESLintの設定を作ったぞ!

qiita.com

extends とか plugin 、 parser のあたりがまったく分かってなかったので、↑の記事にかなり助けられた。

TypeScriptを使う関係で、パーサー周りのエラーが起きていた。

しかし、手元のコミットログを見直すと拡張子を .cjs にするだけでエラー消えてたわ……

あと、 冒頭で書いた .eslintrc.json.eslintrc.js (cjs) と一緒に存在するとエラーになるみたいだったから、 .js (.cjs) に設定を移動させた。

-  extends: ["standard-with-typescript", "plugin:react/recommended"],
+  extends: [
+    "standard-with-typescript",
+    "plugin:react/recommended",
+    "next/core-web-vitals",
+  ],

2. Prettier を設定する

コードフォーマッターとして Prettier を入れるぞ

Prettier · Opinionated Code Formatter

前からよく言われる問題だけど、ESLintとPrettierを併用するとチェックルールが競合して、面倒なので、ルールを良い感じに設定してくれるルールセットを追加する。

ここですごく分かりやすかったのはこの記事でした!

www.sunapro.com

いろいろ歴史的経緯があって、設定の仕方が違う記事とかあるけど、現時点ではこの記事にあるように eslint-config-prettier を使うだけで良さそう。

GitHub - prettier/eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier.

インストールして……

npm install --save-dev eslint-config-prettier

extends の最後に prettier を追加するだけだった。

{
  "extends": [
    "some-other-config-you-use",
    "prettier"
  ]
}

おわり

すーーぐ忘れるので記事に残しておいたぞー