OctopressからHugoに移行

March 13, 2016 - 雑記

Octopressを使い始めて約2年。Hugoに乗り換えました。

WordpressからOctopressに移行が2014年の4月なので約2年です。 そんなに記事はたくさん書いているわけでなはいのですが、それでもrake previewしながら編集しているときのストレスはそれなりにありました。 なので、快適さを得るためにHugoに乗り換えました。

やったこと

  • hugo newでプロジェクト生成した
    • Octopressのmarkdownファイルのみcontent/post以下にコピー
  • permalinkの設定を維持できず、シェルスクリプトでslugを追加した
  • テーマのhydeをカスタムして最低限の要素を取り入れた後、cactusに乗り換えた
    • ソーシャルタグとか色日調整とか細かいところに手を入れた
    • 本当はもう少しマシにしたいけどとりあえずここまで
  • 最後に手動で1ファイルずつ調整した
    • Wordpress時代の設定とか残ってたり、descrptionが雑だったりしたので最終的に1つずつメタデータを修正

ファイル名からslugを追記するシェルスクリプト

#!/bin/bash

for file in $(ls content/post | grep '\.markdown$'); do
  SLUG="$(echo ${file:11} | sed -E 's/.markdown$//')"
  [ -z $SLUG ] && continue

  file="./content/post/$file"
  echo $file
  cat <<EOF > $file.tmp
---
slug: "${SLUG}"
EOF
  cat $file.tmp
  sed -e '1,1d' ${file} >> $file.tmp
  mv $file.tmp $file
done

これを実行する前に、content/post以下はコミットしておいたほうが安心かと。 で、実行おわったら再度git addしてgit commit

github pagesのリポジトリへの登録

あとはReSTARTR/restartr.github.ioをsubmoduleにしてそこに生成ファイルを配置

git submodule add git@github.com:restartr/restartr.github.io public

# 必要なファイルを生成元にコピー
cp ./public/{CNAME,humans.txt,crossdomain.xml} ./content

# いったん全削除
cd public && rm -rf ./$(git ls-files | grep -v gitignore) && cd ..

# コンテンツ生成
hugo -d public

# 別ブランチにcommit && push
cd publid
git checkout migrate-to-hugo
git add -A .
git commit -m 'Migrate to Hugo'
git push origin master

あとは、githubでプルリクエストつくってマージすればOK。 失敗したらRevertできるので安心です。

という感じで移行が完了したわけですが、テーマとか周辺環境はOctopressに比べると貧弱です。 が、一度もろもろ設定してしまったらそんなにいじることもないしまぁ問題ないかと思います。

ストレス感じながら文章かくよりは、気持よく文章書けるほうが良いです。