Edited at

【ALE】eslint_dを使ってESLintの実行を高速化する


やりたいこと

eslint_dを使用して、aleでのESLintの実行を高速化したい。

eslint_dを実行すると、バックグラウンドでサーバプロセスとして常駐し、ESLint実行時のオーバーヘッドを軽減してくれます。


導入

まず、eslint_dをインストールします。

$ npm install eslint_d -g

次にaleをインストールします。

以下はdein.vimを使用した際の設定例です。

on_cmdオプションを使って、指定されたコマンドが実行されるまでaleの読み込みを遅延しています。


dein.toml

[[plugins]]

repo = 'w0rp/ale'
on_cmd = ['ALELint', 'ALEToggle', 'ALEEnable', 'ALEToggleBuffer', 'ALEEnableBuffer']

vimrcにaleからeslint_dを使用するための設定を記述します。


設定例

" eslint_dを利用するための設定

if executable('eslint_d')
let g:ale_javascript_eslint_use_global = 1
let g:ale_javascript_eslint_executable = 'eslint_d'
endif

let g:ale_linters_explicit = 1
let g:ale_linters = {
\ 'javascript': ['eslint'],
\ 'typescript': ['tsserver', 'eslint'],
\ 'vue': ['eslint']
\ }



確認

VimでJavaScriptファイルを開いて、:ALELintコマンドを実行します。

次にターミナルを開いて、以下のコマンドを実行します。

$ eslint_d status

うまく連携ができていれば、Running. One instance cached.のような内容が表示され、aleからeslint_dが実行されていることを確認できます。


eslint_dを停止させる

eslint_dはバックグラウンドで常駐します。

停止させたいときは以下のコマンドを実行します。

$ eslint_d stop


参考