HUGOの.Permalinkでlocalhostが指定されてしまう場合の対処法
結論
hugo serve
コマンドはデバッグ用のコマンドなので、hugo
コマンドやhugo build
コマンドで本番用にビルドしてあげる必要があります(当たり前体操)。
下記の記事を参考にしました。
なぜこの記事を書いたか
このブログではブログ内検索にAlgoliaを使っているのですが、検索結果の記事のBaseUrlが何故かlocalhost:1313
(ローカル環境でのURL)になってしまっていたため、検索した記事に飛べない状況になってしまっていました… 😿
原因
元々、ローカル環境でのデバッグは次の手順で行っていました。
- 何らかの編集
hugo server
コマンドを実行して動作確認- npm scriptで設定したコマンドを使って自動的にAlgoliaにデータをアップロード
- githubにも変更点をプッシュして自動デプロイ
今までは特に気にしたことも無かったのですが、手順2のhugo server
コマンドによってビルドされたファイルの.Permalink
はlocalhost:1313
になってしまいます。Algoliaへのデータの反映はこのビルド時のデータを元にしていたので、Algolia経由での検索結果のURLがおかしくなっていました…😿
対策
編集 ~ ビルド ~ デプロイまでの手順を次の様に変えました。
- 何らかの編集
hugo server
コマンドを実行して動作確認hugo
コマンドを実行- npm scriptで設定したコマンドを使って自動的にAlgoliaにデータをアップロード
- githubにも変更点をプッシュして自動デプロイ
手順3により、.Permalink
がちゃんとconfig.toml
等で指定したbaseUrl
になりました。
なお、実際には手順3, 4はほぼ同時に行われるようにしており、package.json
のscript
内では次のようなコマンドを定義し、サイトのビルドとAlgoliaへのアップロードをシームレスに実行しています。
"scripts": {
"algolia": "algoliaへの自動アップロード処理"
"build": "hugo --minify --gc && npm run algolia"
}
蛇足
本業並に時間があればAlgolia
の検索機能のテストコードも書いて実装したいんだけどそんな余裕はない…