Hexoのテンプレート上でserverとgenerateを判定する方法
Hexoのejsテンプレート中で、ローカルサーバーを立ち上げている状態(hexo server
: development環境)なのか、生成・デプロイをしている状態(hexo generate
: production環境)なのかを判定したい時がありました。
これを判別するには、cache
変数を使えば良いみたいです。例えばthemes/your-theme/layout/hoge.ejs
で以下のように記述すればOKです。
1 | <% if (cache){ %> |
hexojs/hexo issues #371 | github
Get the current mode(production | development)?
ruby風に考えると、本来ならばhexoで用意されているenv
変数でproductionかdevelopmentを判定できそうな予感がしたんですが、env
ではなくcache
を使うというのがちょっとややこしいですね(^^;)探すのにちょっと時間が掛かりました。
cache
の用途としては、例えばgoogle analyticsのコードをローカルサーバー上では実行したくないというケースでしょうか。
Wordpressのプラグインでは管理者と訪問ユーザーに応じて切り分けてくれるような機能が、Hexoのテンプレートでは実装されていない事がよくあります。自分が使わせていただいているテンプレートのhexo-theme-apolloもそういった実装がされていません。更にいうと、googleアナリティクスのトラッキングコードが旧型でユニバーサルアナリティクス版ではないんですよね。イベントトラッキングしようとしてgoogle-analytics.ejs
を覗いた時に初めて気づきました(^^;)
1 | <% if (theme.google_analytics && cache){ %> |
hexoは実際に色々触ってみると、自前でカスタマイズしたくなる箇所が多く、イバラ感が拭えません(^^;)ただ、動作が恐ろしく軽くてホスティングも静的ファイルだけで済むことから、運用コストがかなり押さえられます。ここは要求する内容に応じてトレードオフという事になるんでしょうが、個人ブログなら静的サイトジェネレータ界隈を活用させて頂くので十二分のような気がしました。それでは!