Python
pelican

静的サイトジェネレータPelicanの動的サイト生成

静的サイトジェネレータPelicanを使ったサイト生成を効率的に行うパッケージTakuhaiを作成しました.Pelicanでは,記事を更新したらpelican contentを実行してサイトを生成します.ブラウザ上で確認したいときには,python -m pelican.serverを実行します.この2段階のステップが結構面倒なことがTakuhaiを作成した動機です.

Takuhaiは,Pelicanプロジェクト内の記事ファイルが更新されたら次のことを実行します:

  • 記事をビルドしてHTMLファイルを生成します.
  • ローカルのHTTPサーバを立ち上げて,生成した記事をブラウザで表示します.
  • 記事が更新されたら,その都度ビルドして,ブラウザのページを自動でリロードします.

本パッケージを作成するにあたって,次の記事を参考にしました:

これらの記事が提供する機能に加えて,Takuhaiでは以下の改善を加えています:

  • PyPIおよびAnaconda Cloudからのインストール.
  • 実行コマンドtakuhaiの実装.
  • ホスト名やポート番号の指定.
  • ブラウザの自動起動.
  • 相対URLと絶対URLの選択.

特に有用と考えている「相対URLと絶対URLの選択」について説明します.Takuhaiの実行コマンドtakuhaiはデフォルトで相対URLでサイトをビルドします.これはpelicanconf.pyの設定を上書きします.

PelicanドキュメントのURL settingsによれば,絶対URLが望ましい選択とされています.しかし,これではローカルHTTPサーバを立ち上げても,リンク先が外部サイトになってしまいます.望ましい動作とは言えないでしょう.

Takuhaiでは,pelicanconf.pyの設定を上書きすることで,ローカルHTTPサーバの場合に限って相対URLを使うことができます.pelicanconf.pyRELATIVE_URLSは常にFalseにしておきましょう.開発用にtakuhai contentとしたときには相対URLを使い,公開用にpelican contentとしたときには絶対URLを使います.公開前には忘れずにpelican contentを実行しましょう.

Takuhaiのインストールは簡単です.

> pip install takuhai

condaパッケージも用意しています.

> conda install -c daizutabi -c conda-forge takuhai

インストールができたら,いつも実行している

> pelican content

の代わりに

> takuhai content

を実行してみましょう.http://localhost:8000にアクセスすると記事が表示されます.記事ファイルを更新すると,ブラウザのページが自動でリロードされ,最新の内容に変更されることが確認できます.

なお,Takuhaiパッケージを公開する手順については,「Pythonパッケージの作り方」で紹介しています.本記事と合わせて参考にしていただければ幸いです.