ブログをHugoに移行しました
このブログはこれまでHexoという静的サイトジェネレーターで運用していましたが, この度Hugoに移行することにしました.
ブログを移行した経緯
利用していたHexoのテーマも割と好きだったのですが,下記の点で少し問題を感じていました.
- サイトのデザインが少し古い
- 言語対応の挙動が少し変
- サイト生成時に画像のパスが上手く生成できない
特に,3番目が問題で自前のPythonスクリプトで画像リンクを貼りなおしたりしていました.
Hugoへの移行
HugoもHexoと同じく静的サイトジェネレーターの一種です. HexoがNodeベースの開発環境に対して,Hugoはシンプルに実行ファイル1つでサイトを生成できます. シンプルでサイト生成速度も速いので最近ではHugoの方に興味が出ています.
Hugoの利用に関してですが,研究プロジェクトのまとめページについてHugo Learn Themeを利用したことがあり, スライドのように遷移できるサイト構成を面白く感じていました.
今回,Hugoのテーマの中からブログ移行に良さそうなBilberry Hugo Themeというテーマを発見したので, 今回こちらを利用してブログを移行してみることにしました.
セットアップ
基本的には,Bilberry Hugo Themeのサイトに書いてある手順に従います.
hugo new site my-new-blog
のコマンドで新しいサイトを立ち上げ,
cd my-new-blog/themes
git clone https://github.com/Lednerb/bilberry-hugo-theme.git
のコマンドでテーマを自分のHugoディレクトリにクローンします.
このテーマには,exampleSiteフォルダ以下にサンプル記事が含まれていますので,内容を自分のHugoディレクトリにコピー後,
hugo server -D
で初期ブログが簡単に出来上がります.
設定ファイルの調整
ここからブログを移行するために,config.toml
を調整していきます.
# 利用言語を英語から日本語に変更
DefaultContentLanguage = "jp"
# Languagesセクションを日本語だけにすると言語スイッチをオフにできる
[Languages]
[Languages.jp]
weight = 1
# 数式の利用
enable_mathjax = true
大まかな設定を確認しつつ,Hexoのブログコンテンツを流し込んでみます.
記事の微調整
<!-- Hexoの.mdファイル -->
title: 記事のタイトル
date: 2018-08-01
categories:
- Category1
- Category2
tags:
- Tag1
- Tag2
<!-- Hugoの.mdファイル -->
title: 記事のタイトル
date: 2018-08-01
categories: ['Category1', 'Category2']
tags: ['Tag1', 'Tag2']
利用しているテーマにもよるのかもしれませんが,HexoとHugoのfront matterの形式が違っており,そのままでは上手く動きませんでした.
記事変換用のPythonスクリプトを書いて半自動化しつつ,記事数が少な目だったので目で確認しながら変更を進めました.
また,Teaser画像については,Hexoと同様に記事サマリー時にリンクURLが別の所を指してしまう状況が生まれました.
このテーマに関しては,Teaser画像用のfeaturedImage.png
という画像を配置すれば,自動的にTeaser画像としてリンクしてくれます.
テーマのカスタマイズの必要性
カテゴリやタグに大文字を使っている場合,デフォルトだと強制的にリンクURLが小文字に変更され,大文字で生成されたカテゴリページを上手く表示できません.
# カテゴリーページ
/blog/categories/Category1
# 生成URL
/blog/categories/c
ategory1
そこで,さらに下記の設定を行い,
disablePathToLower = true
preserveTaxonomyNames = true
layouts/partials/footer.html
を少し変更することで挙動が正しくなりました.
全てが簡単にというわけにはいきませんが,だんだん慣れてくると面白くなってきます.
参考文献
[1] Hugo: https://gohugo.io/
[2] Bilberry Hugo Theme: https://github.com/Lednerb/bilberry-hugo-theme
[3] Hugo Learn Theme: https://github.com/matcornic/hugo-theme-learn