Help us understand the problem. What is going on with this article?

Hugo でローカルサーバーかどうかで条件分岐する

More than 1 year has passed since last update.

Hugo Theme を自作していると 「hugo server を実行した時だけこの処理をしてほしい」なんてことがあると思います。Hugo はその要望に応える機能を提供していますが、あまり知られていないと感じるので紹介します。

.Site.IsServer 変数を見ればいい

結論から言うと .Site.IsServer 変数を見て条件分岐すればオッケーです。

hugo server でローカルサーバー(ビルトインサーバー)を立ち上げた時に True が格納されます。以下の公式ドキュメントで紹介されています。

.Site.IsServer

a boolean to indicate if the site is being served with Hugo’s built-in server. See hugo server for more information.

利用ケース

.Site.IsServer 変数を使えば簡単に実現できます。

リソースの取得先を変更する

例えば、PCがオフラインの時でも hugo server でレンダリング結果を確認したいと思ったら、 CSS や JavaScript の読み込みを、

  • ローカルサーバー(hugo server)の時はローカルのリソースにアクセスする。
  • サイトを生成(hugo)した時は https で始まるリンクを指定する。

というように分岐させれば良いです。

Google Analytics のオン・オフ

hugo server を実行した時のサイトでは Google Analytics にアクセス解析させたくない場合もあるかと思います。というかその時は Google Analytics を生成する意味はないです。

.Site.IsServer の使い方

実際の使い方です。

{{ if .Site.IsServer }}
  <script src="/local/materialize/materialize.min.js"></script>
{{ else }}
  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js" defer></script>
{{ end }}

/local/materialize/materialize.min.js${hugo_theme_root}/static/local/materialize/materialize.min.js に配置しておきます。

このようにしておくことで、 hugo server を実行した時には上の script タグが展開され、 hugo コマンドを実行した際には下の script タグが展開されるようになります。

以上です。ありがとうGoざいました ʕ◔ϖ◔ʔ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした