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% になったとかそんなもんです。
良かったら使ってみてください。そして効果があるかどうか教えてください。