概要
前回に引き続き、環境構築を行う。
今回はESLintの設定を行う。
ESLintは現時点(2021年1月)における、JS界のデファクトスタンダードのLinterのようである。
適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)
バージョン
「Reactの勉強」で使用している主なソフトウェアのバージョンは以下の通り。
- node: 15.5.0
- react-create-app: 4.0.1
- react: 17.0.1
- react-dom: 17.0.1
- typescript: 4.1.3
- eslint: 7.17.0
- prettier: 2.2.1
インストールされていることの確認
『りあクト!』によると、ESLintはcreate-react-app
コマンド実行時にインストールされるreact-scripts
モジュールの中に含まれているとのことなので、インストール済みであることを確認する。
$ npm ls eslint react_tutorial_nihon_u_1@0.1.0 /path/to/react_tutorial_nihon_u_1 └─┬ react-scripts@4.0.1 ├─┬ @typescript-eslint/eslint-plugin@4.11.1 │ ├─┬ @typescript-eslint/experimental-utils@4.11.1 │ │ └── eslint@7.17.0 deduped │ └── eslint@7.17.0 deduped ├─┬ @typescript-eslint/parser@4.11.1 │ └── eslint@7.17.0 deduped ├─┬ babel-eslint@10.1.0 │ └── eslint@7.17.0 deduped ├─┬ eslint-config-react-app@6.0.0 │ └── eslint@7.17.0 deduped ├─┬ eslint-plugin-flowtype@5.2.0 │ └── eslint@7.17.0 deduped ├─┬ eslint-plugin-import@2.22.1 │ └── eslint@7.17.0 deduped ├─┬ eslint-plugin-jest@24.1.3 │ └── eslint@7.17.0 deduped ├─┬ eslint-plugin-jsx-a11y@6.4.1 │ └── eslint@7.17.0 deduped ├─┬ eslint-plugin-react-hooks@4.2.0 │ └── eslint@7.17.0 deduped ├─┬ eslint-plugin-react@7.22.0 │ └── eslint@7.17.0 deduped ├─┬ eslint-plugin-testing-library@3.10.1 │ ├─┬ @typescript-eslint/experimental-utils@3.10.1 │ │ └── eslint@7.17.0 deduped │ └── eslint@7.17.0 deduped ├─┬ eslint-webpack-plugin@2.4.1 │ └── eslint@7.17.0 deduped └── eslint@7.17.0
→ インストールされていることは確認できた。
ESLintの設定ファイルの作成
雛形の作成
以下のコマンドを実行して、ESLintの設定ファイルの雛形を生成する。
$ npx eslint --init
コマンドを実行すると、対話モードで用途に関する質問をいくつかされるので、原則『りあクト!』に紹介されているのと同じように回答していく。(第6章参照)
回答が完了すると、コマンドを実行したディレクトリ直下に.eslintrc.js
というファイルが生成されている。
この時に.eslintcache
というファイルも作成されるが、このファイルはGit管理の対象外にしたいかつ、create-react-app
コマンドで生成された.gitignoreには含まれていないので、.gitignoreに以下の1行を追加する。
.eslintcache
設定のカスタマイズ
上記で生成された設定をカスタマイズする。
といっても、以下の『りあクト!』の作者の方がGitHubに公開してくださっている設定を、それぞれの意味を簡単に確認しながらコピペしていくだけである。(解説は本の方を参照。)
github.com
プラグインに関しては、以下の3つを追加している。
www.npmjs.com
www.npmjs.com
github.com
本の方ではyarnを使用しているので、.eslintrc.js
に追加したモジュールをyarnでインストールしているが、npmを使用している場合はnpx eslint --init
実行時にpackage.jsonにも追加されるようなので、手でインストールする必要はなかった。
型定義ファイルが存在する場合は追加するためにtypesync
を実行する。
$ node_modules/typesync/bin/typesync
※ typesync
をローカルインストールするとpathが通らないので、node_modules配下のpathを明示しないといけないことに気づいた。