fswatchで多重にコマンドを実行しないようにする
JavaScriptを書く時で大掛かりなものでないときはnpm-scriptsにbashのコマンドを書くのだけど、 fswatchコマンドで監視させていたらVimでの保存時に2度同じコマンドが実行されていることに気がついた。
$ fswatch -r source | xargs -I{} command
というふうに書いていたのだけど、どうもVimが一時保存ファイルを作る設定にしているせいで2度実行されているみたいだった。 おそらくEmacsやSublime Textにもあるはず。Atomic Saveとか言うのかな。
fswatchは変更があったファイル名を出力するので、grepでフィルターすれば大丈夫だった。
$ fswatch -r source | grep -E '\.js$' --line-buffered | xargs -I{} command
grepじゃなくてもsedのpとか、awkでもよかったかもしれない。
fswatchの-i
も試してみたのだけど、意味が違うのか思ったようには動作してくれなかった。