ブログをZolaに移行した

ブログをそろそろ再開したいと思い、ついでなので環境も旧ブログから別のものに移行することにした。

比較

移行に伴い昨今のSSG事情を調査した。 jamstack - Site Generators

HugoGatsbyNext.jsHexo あたりが人気 。Jekyllも根強い。

調査中にRust製のZolaというものを見つけ、最近はRustを書くことが多いので使ってみることにした。

Zola

Install

シングルバイナリなのでbrewでinstallできる。

 $ brew install zola

Hello world

zola init ディレクトリ名 で初期構築を対話式で行うことができる。

zola init blog
Welcome to Zola!
Please answer a few questions to get started quickly.
Any choices made can be changed by modifying the `config.toml` file later.
> What is the URL of your site? (https://example.com): https://yassun.github.io/blog/
> Do you want to enable Sass compilation? [Y/n]: Y
> Do you want to enable syntax highlighting? [y/N]: y
> Do you want to build a search index of the content? [y/N]: y

作成直後のディレクトリ構成。config.toml以外は空の状態。

$ tree blog
blog
├── config.toml
├── content
├── sass
├── static
├── templates
└── themes

zola serve を実行するとローカル環境で表示を確認することができる。

$ zola serve                                                                                                                                                                                                                           Building site...
Checking all internal links with anchors.
> Successfully checked 0 internal link(s) with anchors.
-> Creating 0 pages (0 orphan) and 0 sections
Done in 9ms.

Web server is available at http://127.0.0.1:1111

Hosting

試しにGitHub Pagesにホスティングしてみる。

zola buildを実行するとhtmlをpublic配下に生成できるので こちらをgh-pages -d public等でgh-pagesにpushするとhttps://[ユーザ名].github.io/[リポジトリ名]/にホスティングされる。

$ zola build
Checking all internal links with anchors.
> Successfully checked 0 internal link(s) with anchors.
-> Creating 0 pages (0 orphan) and 0 sections
Done in 13ms.

CI経由でのデプロイも簡単にできる。deployment

Themes

初期状態では味気ないのでテーマをいれてみる。

installing-and-using-themes

ここから好きなテーマを選択し、該当のリポジトリをthemsディレクトリ配下にcloneもしくはsubmodule add で追加する。

追加後にconfig.tomltheme = "テーマ名"の記述をすると有効になる。

今回はtale-zolaを選択した。

Content

実際にこの記事を書いてみる。 content/overview

content/配下に置かれたマークダウンがそのまま記事として生成され、URLリソース等もファイル名とディレクトリに一致する。

表示形式については templates/配下のファイルでカスタマイズ可能。 templates/overview

テンプレートの中身はTeraを使って記述することができる。

所感

Pros

Cons

デザインに関するこだわりも少なく、なるべくシンプルに運用したいと思っていたので自分の要望にはかなりマッチしていた。

このまましばらく運用を続けて行こうと思う。