研究開発日誌

CG研究・開発のちょっとしたメモ書き

ブログをHugoに移行しました

2018-08-01 Coding

このブログはこれまでHexoという静的サイトジェネレーターで運用していましたが, この度Hugoに移行することにしました.

ブログを移行した経緯

利用していたHexoのテーマも割と好きだったのですが,下記の点で少し問題を感じていました.

  1. サイトのデザインが少し古い
  2. 言語対応の挙動が少し変
  3. サイト生成時に画像のパスが上手く生成できない

特に,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