ESLintでReact.js / ES6+ のコードをチェックする手順


ESLintはJavaScriptのための静的検証ツールです。
明らかなバグの発見や、括弧やスペースの使い方などをプロジェクトで統一するのに役立ちます。

🍄 インストール手順

ESLintのプロジェクトへ導入するのに次のパッケージをインストールします。
ESLintで使うスタイルガイドは「airbnb/javascript」にします。

npm install --save-dev eslint babel-eslint eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react

🐝 設定手順

ESLintの設定手順は.eslintrcに記述します。

// .eslintrc
{
"extends": "airbnb",
"parser": "babel-eslint",
"env": {
"browser": true
},
"ecmaFeatures": {
"classes": true,
"jsx": true
},
"plugins": [
"react",
"jsx-a11y",
"import"
],
"extends": ["eslint", "eslint:recommended", "plugin:react/recommended"],
"parserOptions": {
"ecmaVersion": 7,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"arrow-body-style": "error",
"arrow-parens": "error",
"arrow-spacing": "error",
"eqeqeq": "error",
"generator-star-spacing": "error",
"no-duplicate-imports": "error",
"no-eq-null": "error",
"no-undefined": "error",
"no-useless-computed-key": "error",
"no-useless-constructor": "error",
"no-useless-rename": "error",
"no-var": "error",
"object-shorthand": "error",
"prefer-arrow-callback": "error",
"prefer-const": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"prefer-template": "error",
"rest-spread-spacing": "error",
"semi": "error",
"template-curly-spacing": "error",
"yield-star-spacing": "error"
}
}
オプション 説明
grobals: { キー: true... } キーを登録しておくと定義済の変数とみなして警告を出しません

詳細は「Configuring ESLint」を参照ください。

🗻 ESLintによるチェック

ESLintによるチェックは次のコマンドで行います。

./node_modules/.bin/eslint sample.js

👽 コメントで警告を出さないようにする

特定の行の警告をコメントで無視するようにできます。

let thing = new Thing(); // eslint-disable-line no-use-before-define

コメントの次の行を無視する場合はこちらです。

// eslint-disable-next-line no-use-before-define
var thing = new Thing();

複数行を無視する場合はこちらです。

/*eslint-disable */
alert('foo');
/*eslint-enable */

ファイル内ですべて無視する場合はこちらです。

/*eslint eqeqeq:0*/

🏀 補足:overcommitとの連携

overcommit」というGit eventをhookしてさまざまなコマンドを実行できるツールがあります。
このツールとESLintを組み合わせる手順も書いておきます。

# .overcommit.yml (Add following comfigugration)
PreCommit:
# Style Check for JavaScript
EsLint:
enabled: true
command: ['./client/node_modules/.bin/eslint', 'client/components/*', '-c', 'client/.eslintrc.json']
include: '**/*.jsx'

あとは bundle exec overcommit --sign としておけば git commit の前に自動でESLintが実行されます。

🎳 補足:Werckerとの連携

CIツール「Wercker」でESLintを実行するための設定は次のとおりです。

eslint:
steps:
- bundle-install:
jobs: 4
- install-packages:
name: Install node.js, build-essential, libpq-dev
packages: build-essential libpq-dev nodejs npm nodejs-legacy
- script:
name: NPM install
code: cd client && npm install -D
- script:
name: Run ESLint
code: eslint components/* -c .eslintrc

😎 参考リンク

📚 おすすめの書籍