メモ。
Prettier という JavaScript のフォーマッターをファイル保存時に自動的に実行する、というのを Vim でやりたい。
特に自分は ESLint や Flow のチェックに ALE というプラグインを使っているため
(参考:VimでESLintとFlowを使うためにNeomakeからALEに乗り換える - Qiita)
Prettier も同じように ALE で設定できないのか調べた。
すると、ちゃんと Prettier の公式ドキュメントに ALE での設定方法が載ってた。
Prettier 単体で使う場合は上記を読むのが一番早いが、自分は ESLint と併用するために prettier-eslint-cli)を使っているのでその前提で手順を記載する。
設定手順
Vim 側
ALE の設定として以下を追加する。
let g:ale_fixers = {} let g:ale_fixers['javascript'] = ['prettier-eslint'] " ファイル保存時に実行 let g:ale_fix_on_save = 1 " ローカルの設定ファイルを考慮する let g:ale_javascript_prettier_use_local_config = 1
※プラグイン管理に dein.vim を使っており、toml で管理している場合は以下のようになる
# rc/dein.toml [[plugins]] repo = 'w0rp/ale' hook_add = ''' let g:ale_statusline_format = ['E%d', 'W%d', 'OK'] nmap <silent> <C-w>j <Plug>(ale_next_wrap) nmap <silent> <C-w>k <Plug>(ale_previous_wrap) let g:ale_fixers = {} let g:ale_fixers['javascript'] = ['prettier-eslint'] " ファイル保存時に実行 let g:ale_fix_on_save = 1 " ローカルの設定ファイルを考慮する let g:ale_javascript_prettier_use_local_config = 1 '''
let g:ale_fixers['javascript'] = ['prettier-eslint']
の部分、prettier 単体では ['prettier']
でいいが ESLint と併用している場合は prettier-eslint-cli を使うため上記の設定になる。
プロジェクト側
prettier-eslint-cli をインストールしておくだけ。
$ yarn add -D prettier-eslint-cli
様子
あんまり早くない。。。
非同期で行われるためそこまで気にならないかもしれないけど。
VSCode とかでもこんなもんなんだろうか。
GitHub
以上を反映した Redux アプリ用テンプレートリポジトリがこちらです。
Prettier 導入の Issue は https://github.com/zaki-yama/redux-express-template/issues/16
リファレンス
冒頭の Prettier のドキュメントのほか、ALE の README でも fixer については記載があった。
https://github.com/w0rp/ale#2ii-fixing