reStructuredText を使った静的 HTML 生成ツール
written on Saturday, January 28, 2012
静的 HTML 生成ツールをブログとして使う最近だと Jekyll と Octpress を使って Github pages と連携させるというのが流行ってるんだろう。
Jekyll は Ruby で書かれているツールで、その Python 版として Hyde というのがあるが、 Sphinx 並みにもっと手軽なものがないものかと思ったら、 rstblog があったのを思い出した。
rstblog は文字通り reStructuredText で本文を記述して HTML を生成する。 個人的には Markdown 形式より慣れているので嬉しい。
インストール&設定
サイト用のディレクトリを作成する。
$ mkdir -p /path/to/site
rstblog は PyPi にはアップロードされていないので、Github からダウンロードしてインストールする。
$ git clone https://github.com/mitsuhiko/rstblog.git
$ cd rstblog
$ python setup.py install
rstblog から必要なものをコピーする。
$ cp -r templates /path/to/site/_templates
$ cd /path/to/site
config.yml を作成する。
---
active_modules: [pygments, tags, blog, latex]
author: Your name
canonical_url: http://heavenshell.github.com/
modules:
pygments:
style: tango
css などの静的ファイルを格納するディレクトリを作成する。 static ディレクトリにテンプレートから読み込む css ファイルを作成する。
$ mkdir static
ブログを配信するディレクトリを作成する。 ディレクトリ名は配信する日付になる。
$ mkdir -p 2012/01/28
記事を reStructuredText で作成する。
$ cd 2012/01/28
$ vim start_rstblog.rst
public: yes
tags: [python, restructuredtext]
summary: |
reStructuredText を使った静的 HTML 生成ツールを使ってみた
reStructuredText を使った静的 HTML 生成ツール
=============================================
静的 HTML 生成ツールをブログとして使う最近だと `Jekyll <https://github.com/mojombo/jekyll>`_ と `Octpress <http://octopress.org/>`_ を使って Github pages と連携させるというのが流行ってるんだろう。
public はトップの一覧に表示するかどうかの設定。 これが no の場合トップにリンクが表示されなくなる(ただし url で直接アクセスすれば表示はできる)。 tags はその記事のタグでタグ一覧に表示される。 summary はトップページに表示される要約。
デザインカスタマイズ
自分でデザインなどをカスタマイズするには、基本的に _templates の下のテンプレートファイルを編集する。
テンプレートエンジンに Jinja2 が使われているが、さほど難しい事をやってる訳ではないので、基本的には css をいじる感じ。
HTML 生成
以下のコマンドを実行すると、_build というディレクトリが出来る。
$ run-rstblog build
$ tree _build
_build
├── 2012
│ ├── 01
│ │ ├── 28
│ │ │ └── start_rstblog
│ │ │ └── index.html
│ │ └── index.html
│ └── index.html
├── archive
│ └── index.html
├── feed.atom
├── index.html
├── static
│ ├── _pygments.css
│ ├── site.css
│ └── style.css
└── tags
├── index.html
├── python
│ ├── feed.atom
│ └── index.html
└── restructuredtext
├── feed.atom
└── index.html
9 directories, 14 files
このまま生成した HTML ファイルをブラウザで開いても css などが絶対パスになるので、組み込みの Web アプリケーションとして起動する。
$ run-rstblog serve
Serving on http://127.0.0.1:5000/
ブラウザで http://127.0.0.1:5000/ にアクセスすると表示される。
一々コマンドを打つのが面倒くさいので、Makefile にした。
all: build serve
clean:
rm -rf _build
build:
run-rstblog build
serve:
run-rstblog serve