Jekyllで--watchの代わりにgolangを使ってみた

jekyll の –watch が CPU をバカ食いするとのことなので その代わりに golang 使って jsw というアプリを書いて見ました。

Jekyll で –watch の代わりに Grunt を使ってみるテスト によれば、Jekyll は –watch 使ってるとCPUバカ食いで地球に優しくないそうです。言われてみれば思い当たるフシも多く、自分の環境でも何とかしたいなと考えました。

なんでCPUを消費するかはあの記事に任せるとして、Grunt (nodejs) を使って多少はマシになったとのこと。それならばこっちは golang 使ってみますか、ってことで jsw というアプリを書きました。

$ jekyll serve --watch

として起動するところを

$ jsw

に差し替えるだけで高効率に同じことをやってくれるはずです。

jsw では jekyll serve を起動したままにして、 カレントディレクトリを監視 し、変更があったら 随時 jekyll build を起動するだけの、非常に簡単なプログラムです。

ディレクトリの監視には fsnotify を使ってます。Windows向けの実装をざっくり読んだ限りでは、ポーリングではなくちゃんとディレクトリ監視のフック使ってたので、jekyll や grunt とは違うと考えています。もっとも Windows 以外の実装では動かない可能性もありますね。

ちなみに私の手元の 850 ページくらいのjekyll projectでは、効果はたいしたことない感じでした。いやもともと 1% くらいしかCPU使ってなかったんですが、それが 0% になったとかそんなもんです。

良かったら使ってみてください。そして効果があるかどうか教えてください。