Blog.

TypeScript のコードスタイル設定(eslint & prettier)

TypeScript のコードスタイルチェック設定

目的

TypeScript を使った React (NextJS) プロジェクトにコードスタイルチェックとフォーマッターを導入する。

環境情報

要素 バージョン
macOS 10.15.7
TypeScript 3.9.2
NextJS 10.0.1
React 16.13.0
eslint 7.13.0
prettier 2.1.2
WebStorm 2020.2
node 14.4.0
yarn 1.22.10

実行手順

パッケージインストール

プロジェクトのルートディレクトリで以下を実行する。

### for typescript

$ yarn add -D eslint prettier eslint-config-prettier
$ yarn add -D typescript @typescript-eslint/{parser,eslint-plugin}

### for react

$ yarn add -D @types/{react,react-dom}
$ yarn add -D eslint-plugin-{react,react-hooks}

eslint 設定

.eslintrc.json に以下の内容を記述する

{
  // 適用する環境
  "env": {
    "es6": true,
    "node": true,
    "browser": true,
    "commonjs": true
  },
  // パーサー
  "parser": "@typescript-eslint/parser",
  // jsx を使います
  "parserOptions": {
    "ecmaVersion": 2018,
    "ecmaFeatures": {
      "jsx": true
    },
    "sourceType": "module"
  },
  // React のバージョンは自動検出に
  "settings": {
    "react": {
      "version": "detect"
    }
  },
  "plugins": ["react-hooks", "react", "@typescript-eslint"],
  // 基本的にルールは recommended に従う
  // prettier 関連は配列の最後尾に書く
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended",
    "prettier",
    "prettier/react",
    "prettier/@typescript-eslint"
  ],
  "rules": {
    // TypeScirpt なので prop-types は要らない
    "react/prop-types": "off"
  },
  // .js ファイルをオーバーライド (webpack.conig.jsなど)
  "overrides": [
    {
      "files": ["*.js"],
      "rules": {
        "@typescript-eslint/no-var-requires": "off",
        "@typescript-eslint/explicit-function-return-type": "off"
      }
    }
  ]
}

prettier 設定

.prettier.json に以下の内容を記述する。

{
  "singleQuote": true,
  "jsxBracketSameLine": false,
  "bracketSpacing": true,
  "semi": false,
  "useTabs": false
}

linter 実行スクリプト登録

package.json の script エントリーに以下を追加する。

"lint": "eslint --ext .ts,.tsx ./pages ."

linter 実行

プロジェクトルートで以下を実行する。

$ yarn lint

WebStorm での TypeScript 整形

コードエディターで、⌘ Shift L を押下する。

参考にした情報