HugoでGoogle Analyticsを開発中に無効にする正しい方法

まず、Google Analyticsの埋め込みはビルトインのテンプレートを使う。<head>のどこかに次のコードを追加する。

{{ template "_internal/google_analytics.html" . }}

この前後でローカルで実行されているかのチェックを自前でしてしまいそうになるが、このテンプレートのコードを良く読むと先頭に次のようにある。

{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
{{- if not $pc.Disable -}}

どうやら設定ファイルでprivacy.googleAnalytics.disable = trueとすればスクリプトを無効にできそうだ。後はlocalhostで実行時だけ別の設定を持たせる方法が分かればよい。ドキュメントによれば、そもそもサーバーの実行時には自動的に環境がdevelopmentになるらしい。

Default environments are development with hugo server and production with hugo.

設定ファイルの配置を以下のようにしてやれば、環境によらず_default以下の設定が読み込まれ、developmentのときだけ同名のディレクトリ以下の設定も追加で読み込まれる。

config
├── _default
│   └── config.toml
└── development
    └── privacy.toml

最後にprivacy.tomlの中身に以下の行を追加する。

[googleAnalytics]
disable = true

これで、通常通りhugo serverで起動するとGAが無効になる。コードや実行コマンドの変更一切なしで切り替えることができるので、一番美しい方法だと思っている。