ESLint についてのメモ
The pluggable linting utility for JavaScript
JSHintやJSLintはユーザ独自のルールを追加することはできないけれど、ESLintは完全に全てのルールがプラガブルになるようデザインされている。
Install
$ npm install -g eslint
Usage
$ eslint -h
eslint [options] file.js [file.js] [dir]
Options:
-h, --help Show help.
-c, --config path::String Load configuration data from this file.
--rulesdir path::String Load additional rules from this directory.
-f, --format String Use a specific output format. - default: stylish
-v, --version Outputs the version number.
--reset Set all default rules to off.
--eslintrc Enable loading .eslintrc configuration. - default: true
Configure
ルールを設定する方法は2つ。
- JavaScriptファイルに直接コメントで記述
- 設定を記述した
JSONかYAMLのファイルを利用する(デフォルトでは.eslintrc)
設定できる情報は以下の構成。
- Environments : スクリプトの実行環境。Environmentsの設定値に従ってその環境のデフォルトで有効なグローバル変数とルールが設定される。
- Globals : 実行時に追加するグローバル変数。
- Rules : 有効にされているルールとエラーレベルのルール。
Environments
設定ファイルでのみ定義できる。使用可能なenvironmentsの値は以下。
-
browser: ブラウザのグローバル変数 -
node:nodeのグローバル変数とnode特有のルール -
amd:define()とrequire()をグローバル変数として定義 -
mocha:mochaのグローバル変数
envキーを使って、有効にしたい環境をtrueに設定する。
{
"env": {
"browser": true,
"node": true
}
}
YAML形式であれば
---
env:
browser: true
amd: true
Globals
特定のグローバル変数を許可する場合、JSファイルの中にコメントを記述する形でも設定ファイルに記述する形でも、どちらでもよい。
/*global var1, var2*/
falseにすると書き込み禁止(読み取り専用)にもできる。
/*global var1:false, var2:false*/
設定ファイルに記述する場合も同様。globalsキーを使って記述する。
{
"globals": {
"var1": true,
"var2": false
}
}
Rules
ESLintは、デフォルトで有効なルールとデフォルトで無効なルールとで構成されている。ルールはJSファイルにコメント記述でも設定ファイルに記述でも、変更できる。
設定するには、ルールのIDに対して
-
0: 無効にする -
1: 有効にする(警告) -
2: 有効にする(エラー)
ESLintのルールについては、公式サイトにドキュメントがある。
JSファイルにコメントで記述する場合は以下のように記述する。
/*eslint eqeqeq:0, curly: 2*/
設定ファイルに記述する場合は、rulesキーを用いて記述する。
{
"rules": {
"eqeqeq": 0,
"curly": 2,
"quotes": [2, "double"]
}
}
なお、デフォルト有効のルールはすべて2に設定されている。