LoginSignup
3
4

More than 3 years have passed since last update.

VSCode + Prettier + ESLint かんたん設定

Last updated at Posted at 2020-03-15

はじめに

前回の記事 React + TypeScript + Webpackで開発環境セットアップ に続き、プロジェクトにコードフォーマットと静的解析を導入していきます。🤖

プロジェクトファイルはこちらで公開中💁‍♂️
・説明に沿って導入を試したい場合はこのブランチ:topic/basic_template
・完成版を確認してみたい場合はこのブランチ:topic/lint_and_format

プラグイン

まずは、VSCodeにプラグインをインストールしましょう。
Prettier
ESLint

Prettier

$ yarn add -D prettier

設定ファイルを作成。

.prettierrc.json
{
  "arrowParens": "always",
  "tabWidth": 2,
  "singleQuote": true,
  "trailingComma": "none",
  "semi": true,
  "printWidth": 120
}

VSCodeの設定から、保存時にフォーマットをオンにする。
Screen Shot 2020-03-15 at 20.04.17.png
src/index.tsxを開いて保存すると、フォーマットされましたね!

ESLint

$ yarn add -D eslint
$ yarn eslint --init

自分はこんな設定にしてみました。
Screen Shot 2020-03-15 at 10.52.21.png

自分はyarnを使っているので、自動生成されたpackage-lock.jsonは不要なので削除し、パッケージを改めてインストール。ちなみにeslint --initにおけるyarnサポートが無い理由については、このあたりを読むとわかります。

$ rm package-lock.json
$ yarn install

src/index.tsxでさっそくエラーが出ていますね。
Screen Shot 2020-03-15 at 11.12.07.png

.tsxでもJSXの記述を許可する為、設定ファイルのrulesに以下を追記。

.eslintrc.json
{
  "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を追記すると、エラーが消えました。

.eslintrc.json
{
  "extends": ["plugin:react/recommended", "airbnb", "prettier"]
}

コマンド追加

lintコマンドを追加しておきます。

package.json
"scripts": {
  "lint": "eslint '**/*.{js,ts,tsx}'"
}

Lint時にコードフォーマットもチェック

試しに、VSCodeの"Format On Save"を無効にした後、src/index.tsxの4行目末尾のセミコロンを削除してみる。
Screen Shot 2020-03-15 at 20.39.41.png

あら、lintを実行しても通ってしまいました。

$ yarn lint

Prettierによるフォーマット関連のチェックもlintと同時にチェックしたいですね、ということでeslint-plugin-prettierを導入。

$ yarn add -D eslint-plugin-prettier

extendsprettierを以下のように変更

.eslintrc.json
{
  "extends": ["plugin:react/recommended", "airbnb", "plugin:prettier/recommended"]
}

再度yarn lintすると、エラーが検知されるようになりました!🕵🏻‍♂️

コミットのタイミングでLint実行

ついでに、コミット直前に自動でlintするようにしておきます。

$ yarn add -D husky
$ touch .huskyrc.json

設定ファイルには以下のように記述。

.huskyrc.json
{
  "hooks": {
    "pre-commit": "yarn lint"
  }
}

git commit時にyarn lintが実行されるようになりました。ナイスです👍

まとめ

今回はReact&TypeScriptなプロジェクトに導入する手順でしたが、基本的にeslint --init時の質問に答えていけば、自動で必要なパッケージがインストールされるので楽です。あとは、必要に応じてルールを追記/変更していけば良いですね!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4