- 更新日: 2017年5月17日
- jQuery & JavaScript
React.js用にESLintをインストールして設定、JavaScriptコードを楽に検証しよう
ESLint は、JavaScript コードをチェックするための静的検証ライブラリです。文法エラーやコーディングスタイルなどを、プログラム実行前に検証してチェックすることができます。今回は、React.js を用いて書いた JavaScript コードを検証するための ESLint 環境を作りました。
— 環境 —
npm 4.6.1
yarn 0.24.5
macOS Sierra
npm のアップデート。
1 2 3 4 5 |
$ npm update -g npm $ npm --version 4.6.1 |
yarn のアップデート。
1 2 3 4 5 |
$ brew upgrade yarn $ yarn --version 0.24.5 |
ESLint のパッケージ群をインストール
package.json が未作成の場合は、事前に npm init で作成しておきます。
1 2 3 |
$ npm init |
対話的に回答すると、package.json が作られる。
JavaScript(React,ES6,JSX)のコードを解析するために、以下のパッケージ群をインストールします。また eslint-config-airbnb も入れて、Airbnb のコーディング規約を用いて .eslintrc を設定します。
・eslint-config-airbnb
・eslint-plugin-import
・eslint-plugin-react
・eslint-plugin-jsx-a11y
・eslint
npm でインストール
npm でパッケージをローカル(node_modules ディレクトリ)にインストールします。
1 2 3 |
$ npm install --save-dev eslint-config-airbnb eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y eslint |
–save-dev オプションを付けると、package.json の devDependencies にもパッケージが追記されます。
-g オプションを付けるとグローバルにインストールできますが、おすすめはしません。
1 2 3 |
$ npm install -g --save-dev eslint |
私はグローバル環境を汚したくないので、-g オプションは付けずにローカルにインストールしました。
yarn でインストール
yarn でインストールする場合は以下。yarn を使うとパッケージのインストールが速いです。
1 2 3 |
$ yarn add --dev eslint-config-airbnb eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y eslint |
npm 同様にローカル(node_modules ディレクトリ以下)にパッケージがインストールされます。
eslint –init で ESLint の設定ファイル(.eslintrc)を作成
eslint –init を実行して対話的に答えて、設定ファイル(.eslintrc)の作成を行います。ローカルのディレクトリ(node_modules 以下)に eslint をインストールしたので、eslint コマンドを実行するにはパスを指定する必要がある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ ./node_modules/.bin/eslint --init ? How would you like to configure ESLint? Answer questions about your style ? Are you using ECMAScript 6 features? Yes ? Are you using ES6 modules? Yes ? Where will your code run? Browser ? Do you use CommonJS? No ? Do you use JSX? Yes ? Do you use React? Yes ? What style of indentation do you use? Spaces ? What quotes do you use for strings? Single ? What line endings do you use? Unix ? Do you require semicolons? No ? What format do you want your config file to be in? JSON Successfully created .eslintrc.json file in /path/to/my_project |
.eslintrc.json が以下の内容で作成されました。
.eslintrc.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
{ "env": { "browser": true, "es6": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaFeatures": { "experimentalObjectRestSpread": true, "jsx": true }, "sourceType": "module" }, "plugins": [ "react" ], "rules": { "indent": [ "error", 4 ], "linebreak-style": [ "error", "unix" ], "quotes": [ "error", "single" ], "semi": [ "error", "never" ] } } |
プロジェクトに合わせて、独自のルールを rules プロパティに追加してカスタマイズします。
パス指定なしで eslint コマンドを使えるようにする
ローカルのディレクトリ(node_modules)以下にインストールした ESLint で、パス指定なしで eslint コマンドを実行できるようにします。eslint-cli というパッケージをインストールすると良いです。
1 2 3 |
$ npm install -g eslint-cli |
eslint-cli は、グローバルにインストールするため -g オプションを付けてインストール。これで、ローカルのディレクトリ(node_modules 以下)に入れた eslint コマンドをパス指定なしで実行できるようになります。
1 2 3 4 |
$ eslint --version v3.19.0 |
ESLint でコードをチェックする
テスト用の JavaScript ファイルを作成して、ESLint でチェックしてみます。
1 2 3 4 |
$ vi example.js document.write("hello world"); |
続いて、example.js を eslint でチェック。
1 2 3 4 5 6 7 8 9 |
$ eslint example.js /path/to/my_project/example.js 1:16 error Strings must use singlequote quotes 1:30 error Extra semicolon semi x 2 problems (2 errors, 0 warnings) |
エラーが2つ出ました。「文字列はシングルクォートで囲ってね」、「セミコロンが余計だよ」の2つを修正します。
1 2 3 4 |
$ vi example.js document.write('hello world') |
もう一度チェック。
1 2 3 |
$ eslint example.js |
警告が出なくなりました。
ESLint でのチェック実行コマンドを npm script にする
いちいちファイルを指定して eslint でチェックを実行するのは面倒くさいので、JavaScript ファイルをいっぺんに検証できるように npm script としてまとめておきます。
package.json
1 2 3 |
"scripts": { "lint": "eslint **/*.js" } |
これで以下のように実行して、まとめて eslint によるチェックを実行できる。
1 2 3 |
$ npm run lint |
- – 参考リンク –
- ESLint をグローバルにインストールせずに使う – Qiita
- ESLint で ES6で書かれたReact のコードを検証する – Qiita
- ReactとReduxを使ったアプリを試すための環境作る – Qiita
- npmでeslint-config-airbnbを導入してみる – Motomichi Works Blog
- jQuery & JavaScript の関連記事
- JavaScriptでHTMLコメント要素を取得する
- YahooのJavaScriptマップAPI(YOLP)で地図を描画
- HTML5のGeolocation APIで現在地の位置情報(緯度/経度)を取得するJavaScriptコード
- JavaScriptでキャメルケースを単語に分割
- Browserify + GulpでクライアントのJavaScript / CoffeeScriptでrequire
- JavaScript/jQueryでDOM要素が存在するか確認する方法
- JavaScriptでスクロールを一時的に止める
- JavaScriptでcapitalize、アルファベット一文字目を大文字にする
- JavaScriptでrangeオブジェクトから座標を取得するコード
- CoffeeScript入門、クラス継承とメソッドのオーバーライド
Leave Your Message!