ESLintのオプションの設定は以下2つのいずれかで。
- JavaScriptのコメント
.eslintrc
ファイルかpackage.json
内のeslintConfig
、もしくはCLIで設定ファイルを指定
- Enviroments : どの環境で実行する想定か
- Globals : スクリプト実行時に追加するグローバル変数
- Rules : 有効にするルールとそのエラーレベル
JavaScriptの言語オプションを定義できる。デフォルトでは、ES5の構文のみサポート。設定でES6やJSXのサポートを追加可能。
.eslintrc
でecmaFeatures
プロパティを使って設定する。設定できるオプションは以下。
全てのオプションがデフォルトfalse
。
arrowFunctions
: アロー関数を有効にするbinaryLiterals
: 2進数リテラルを有効にするblockBindings
:let
とconst
を有効にするclasses
: クラスを有効にするdefaultParams
: デフォルトパラメータを有効にするdestructuring
: 分解代入を有効にするforOf
:for of
ループを有効にするgenerators
:generators
を有効にするmodules
: モジュールとグローバルのstrictモードを有効にするobjectLiteralComputedProperties
: 計算されたプロパティ名を有効にするobjectLiteralDuplicateProperties
: strictモードでの重複したプロパティ名を有効にするobjectLiteralShorthandMethods
: オブジェクトリテラルのメソッドのショートハンド記法を有効にするobjectLiteralShorthandProperties
: オブジェクトリテラルのプロパティのショートハンド記法を有効にするoctalLiterals
: 8進数リテラルを有効にするregexUFlag
: 正規表現でのu
フラグを有効にするregexYFlag
: 正規表現でのy
フラグを有効にするrestParams
: 可変長引数を有効にするspread
: spread operatorを有効にするsuperInFunctions
:templateStrings
: テンプレート文字列を有効にするunicodeCodePointEscapes
: コードポイントのエスケープを有効にするglobalReturn
: グローバルスコープでのreturn
を有効にするjsx
: JSXを有効にする
デフォルトのパーサーはEspree。以下の要件を満たすパーサーであればEspreeの代わりに利用可能。
- ローカルにインストールできるnpm
- Esprimaと互換性があるインターフェースを持ってる(
parse
メソッドが必要) - Esprimaと互換性があるASTとトークンオブジェクトを生成する
パーサーに別のnpm
を利用するのであれば、.eslintrc
でparser
オプションを宣言する。
ESLintに適合するパーサーは以下。
カスタムパーサーを使う場合でも、ES5に無いものはecmaFeatures
の設定が必須。
定義済みのグローバル変数を設定するのとデフォルトで有効/無効にするルールを決める。使用できるenviromentsは以下。
browser
: ブラウザのグローバル変数node
: Node.jsのグローバル変数とNode.jsに特化したルールworker
: workersのグローバル変数amd
:amd
の仕様に従ってrequire()
とdefine()
をグローバル変数として定義mocha
: すべてのMochaのテスト用グローバル変数jasmine
: すべてのJasmine(v1.3とv2.0)のテスト用グローバル変数phantomjs
: Phantomjsのグローバル変数jquery
: jqueryのグローバル変数prototypejs
: Prototype.jsのグローバル変数shelljs
: ShellJSのグローバル変数meteor
: meteorのグローバル変数mongo
: mongoのグローバル変数applescript
: applescriptのグローバル変数es6
: モジュールを除いたすべてのES6の機能を有効にする
JavaScriptのコメントでも設定ファイルの中でも、CLIのenv
オプションでも宣言可能。
JavaScriptのコメントなら以下のようにする。
/* eslint-env node, mocha */
設定ファイルに記述するなら、env
で。
{
"env": {
"browser": true,
"node": true
}
}
package.json
に記述するなら、
{
...,
"eslintConfig": {
"env": {
"browser": true,
"node": true
}
}
}
ESLintはデフォルトで、同じファイルで定義されてないけどアクセスしている変数に対して警告を出す。
globals
で許可するグローバル変数を定義できる。
JavaScriptのコメントなら、以下で。
/* global foo, bar */
読み取り専用なら、false
で。
/* global foo:false, bar:false */
設定ファイルに記述するのであれば、globals
キーで定義する。上書き可能ならtrue
で。読み取り専用ならfalse
で。
{
"globals": {
"foo": true,
"bar": false
}
}
サードパーティのプラグインも使えるようになってる。npmでインストールしないといけない。
設定ファイルに記述する場合、plugins
キーを使う。eslint-plugin-
プレフィックスは省略可能。
{
"plugins": [
"plugin-name",
"eslint-plugin-name"
]
}
ESLintは大量のルールを持っていて、それはデフォルトで無効だったり、有効だったりする。どのルールを利用して、どのルールを利用しないかは、JavaScriptのコメントか設定ファイルで定義すればいい。
ルールの有効無効を切り替えるには、ルールのIDに対して0〜2の値を設定する。
- 0: 無効にする
- 1: 警告にする
- 2: エラーにする
JavaScriptのコメントで書くなら、以下のようにする。
/* eslint: quotes: [2, "double"], curly: 1 */
設定ファイルの中で定義するなら、以下のようにする。
{
"rules": {
"quotes": [2, "double"]
"curly": 1
}
}
設定ファイルに共有設定を追加することができる。設定ファイルにsettings
オブジェクトを追加すれば、全てのルールで共有される。
カスタムのルールを追加した時などに有用らしい。
{
"settings": {
"sharedData": "hoge"
}
}
設定ファイルを使う手段は2つ。いずれもデフォルトの設定を上書きする。
- CLIで
-c
オプションをつけて設定ファイルを指定 .eslintrc
かpackage.json
優先順位は以下の通り。
- JavaScriptのコメント
/* eslint-disable */
、/* eslint-enable */
/* global */
/* eslint */
/* eslint-env */
- CLIオプション
--global
--rule
--env
-c
、--config
- プロジェクトの設定
- Lint対象のファイルと同じディレクトリの
.eslintrc
- Lint対象のファイルと同じディレクトリの
package.json
- 親のディレクトリの
.eslintrc
、package.json
を辿る - デフォルトの設定
enviroments.json
eslint.json
extends
で設定ファイルの拡張ができる。
package.json
以外の設定ファイルはコメントが書ける。
プロジェクトのルートディレクトリに.eslintignore
をつくれば、無視するファイル、ディレクトリを決められる。
Lint対象外のパスのグロブパターンを1行毎に記述する。グロブパターンに使われているのはminimatch。
#
始まりの行はコメント扱い!
始まりの行は、その前に無視リストに入れたパターンを否定するパターン{}
は複数のファイルパターンを参照する
node_modules/**
は常に無視される。