ブログエンジンをOctopressからHexoへ移行しました。
この記事では自分の場合の移行の手順についてまとめます。
コンテンツデータの移行
記事や画像などのコンテンツデータの移行は、自分の場合はほぼこれだけでOKでした。
# 新しいhexoのルートディレクトリを作成
mkdir hexo
cd hexo
hexo init
# 投稿記事をコピー
cp -pr ../octopress/source/_posts/*.markdown source/_posts/
# 拡張子をmdに変更
for f in *.markdown; do echo mv $f ${f:r}.md; done | sh -x
# 投稿の先頭行(`---`)を削除
for f in source/_posts/*.md; do sed -i "" -e '1,1d' $f; done
# 画像をコピー
cp -pr ../octopress/source/images source/
# その他のファイルをコピー(CNAMEは独自ドメインの場合のみ)
cp -p ../octopress/public/{CNAME,favicon.ico} source/
ただし、Octopressの include
に相当する機能はHexoには無いので、その記事についてはベタッとinclude先をコピーしました。
設定ファイルの編集(_config.yml
)
従来の投稿のパーマリンク、および今後のパーマリンクの構造をOctopressと同じにするため、_config.yml
で下記のように設定を変更しました。
permalink: blog/:year/:month/:day/:title/
new_post_name: :year-:month-:day-:title.md
デプロイ先はGitHubなので、下記の設定を追加しました。
deploy:
type: git
repo: [email protected]:kwhrtsk/kwhrtsk.github.io.git
テーマはしっくり来るものがなかったので、Landscapeをベースに自作したものを使っています。 見た目はほとんどLandscapeのままですが、特にモバイルでのコードの表示量や、サイドバーにAbout追加したり細かい修正を加えています。
これについては別の記事で。
技術ブログのためのHexoのテーマ Ingenuous をリリースしました
プラグインの追加
下記のプラグインを追加しました。
hexo-generator-feed
- /atom.xmlの出力のため
hexo-generator-sitemap
- /sitemap.xmlの出力のため
hexo-generator-robotstxt
- /robots.txtの出力のため
hexo-deployer-git
- GitHubへのデプロイのため
npm install --save \
hexo-generator-feed \
hexo-generator-sitemap \
hexo-generator-robotstxt \
hexo-deployer-git
ここまでやれば、次のコマンドでローカルにサーバを立ち上げて、http://localhost:4000/ でプレビューを確認できます。
記事や_config.yml
の変更は随時反映されます。
hexo server
デプロイは下記のコマンドです。
hexo deploy
.deploy_git/
ディレクトリ以下にデプロイ用のリポジトリが作られて、
_config.yml
で指定したリポジトリにpushされます。(octopressのコミットはすべて消えます)