はじめに
前回の記事 React + TypeScript + Webpackで開発環境セットアップ に続き、プロジェクトにコードフォーマットと静的解析を導入していきます。🤖
プロジェクトファイルはこちらで公開中💁♂️
・説明に沿って導入を試したい場合はこのブランチ:topic/basic_template
・完成版を確認してみたい場合はこのブランチ:topic/lint_and_format
プラグイン
まずは、VSCodeにプラグインをインストールしましょう。
・Prettier
・ESLint
Prettier
$ yarn add -D prettier
設定ファイルを作成。
{
"arrowParens": "always",
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "none",
"semi": true,
"printWidth": 120
}
VSCodeの設定から、保存時にフォーマットをオンにする。
src/index.tsx
を開いて保存すると、フォーマットされましたね!
ESLint
$ yarn add -D eslint
$ yarn eslint --init
自分はyarn
を使っているので、自動生成されたpackage-lock.json
は不要なので削除し、パッケージを改めてインストール。ちなみにeslint --init
におけるyarn
サポートが無い理由については、このあたりを読むとわかります。
$ rm package-lock.json
$ yarn install
.tsx
でもJSX
の記述を許可する為、設定ファイルのrules
に以下を追記。
{
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".jsx", ".tsx"] }]
}
}
もうひとつ、webpack.config.js
にエラーが出ています。
どうやらPrettier
のルールとバッティングしているので、eslint
側のフォーマット関連ルールをeslint-config-prettier
で無効にしましょう。
$ yarn add -D eslint-config-prettier
extends
の最後にprettier
を追記すると、エラーが消えました。
{
"extends": ["plugin:react/recommended", "airbnb", "prettier"]
}
コマンド追加
lint
コマンドを追加しておきます。
"scripts": {
"lint": "eslint '**/*.{js,ts,tsx}'"
}
Lint時にコードフォーマットもチェック
試しに、VSCodeの"Format On Save"を無効にした後、src/index.tsx
の4行目末尾のセミコロンを削除してみる。
あら、lintを実行しても通ってしまいました。
$ yarn lint
Prettierによるフォーマット関連のチェックもlintと同時にチェックしたいですね、ということでeslint-plugin-prettier
を導入。
$ yarn add -D eslint-plugin-prettier
extends
のprettier
を以下のように変更
{
"extends": ["plugin:react/recommended", "airbnb", "plugin:prettier/recommended"]
}
再度yarn lint
すると、エラーが検知されるようになりました!🕵🏻♂️
コミットのタイミングでLint実行
ついでに、コミット直前に自動でlint
するようにしておきます。
$ yarn add -D husky
$ touch .huskyrc.json
設定ファイルには以下のように記述。
{
"hooks": {
"pre-commit": "yarn lint"
}
}
git commit
時にyarn lint
が実行されるようになりました。ナイスです👍
まとめ
今回はReact
&TypeScript
なプロジェクトに導入する手順でしたが、基本的にeslint --init
時の質問に答えていけば、自動で必要なパッケージがインストールされるので楽です。あとは、必要に応じてルールを追記/変更していけば良いですね!