PelicanはPython製の静的サイトジェネレータ。
このブログもPelicanで作られています。
Pelicanでgh-pagesにブログをデプロイする方法をまとめました。
Pelicanのインストールとセットアップ
Pythonをある程度触ったことのある人ならPelicanを使うのは簡単です。
まず、Pelicanと必要なパッケージをインストールします。
$ pip install pelican Markdown
Pelicanはquickstartコマンドが用意されているので、それを利用して環境を整えます。質問を幾つかされるので答えていく形式です。
$ pelican-quickstart
以下のようなディレクトリが作られます。
yourproject/
├── content
│ └── (pages)
├── output
├── develop_server.sh
├── fabfile.py
├── Makefile
├── pelicanconf.py # Main settings file
└── publishconf.py # Settings to use when ready to publish
記事を書く
記事はcontent以下に書きます。
記事にはタイトルや日付、タグなどのメタデータを書く必要があります。
reStructuredTextの場合
:title: <title>
:date: YYYY-MM-DD HH:MM
:modified: YYYY-MM-DD HH:MM
:tags: <tag>, <tag>
:category: <category>
:slug: <slug>
:authors: <author>, <author>
:summary: <summary>
Markdownの場合
Title: <title>
Date: YYYY-MM-DD HH:MM
Modified: YYYY-MM-DD HH:MM
Tags: <tag>, <tag>
Category: <category>
Slug: <slug>
Authors: <author>, <author>
Summary: <summary>
titleとdate以外は省略可能です。
Note
slugは記事のURLを指定できます。
slugを省略するとtitleのlower-caseがURLになります。
Markdownをインストールしたので*.mdという拡張子でファイルを作ればMarkdownが使えます。
ビルドは以下のコマンドで、outputに静的ページがビルドされます。
$ pelican content -s pelicanconf.py
contentのディレクトリ構成
contentにディレクトリを作成するとcategoryとして扱われます。
├── content
│ ├── category1
│ ├── category2
│ ├── category3
│ ├── no_category.md
│ └── pages
ディレクトリでカテゴリ分けをすれば、メタデータにcategoryを書く必要がない+わかりやすいので基本的にカテゴリ分けはディレクトリですれば良いと思います。
content以下のディレクトリでpagesは特殊なディレクトリ名で、メタデータ不要で書けます。基本的に、AboutやContactなどの独立したページの作成を目的としているのでそのような用途で使用します。
GFMぽく使う
PelicanでGitHub Flavored Markdown(GFM)をマジで使いたい! - Qiita
上記の記事を参考にパッケージのインストール、pelicanconf.pyの編集をします。
$ pip install mdx_del_ins
pelicanconf.pyにMD_EXTENSIONを追加して、必要な項目を書きます。
MD_EXTENSIONS = ['del_ins', 'fenced_code', 'codehilite(css_class=highlight)', 'tables']
デフォルトのExtensionは以下にまとまっています。
PythonのMarkdownを調べて、おすすめ設定を以下にまとめましたので参考までに。
gh-pagesにpushする
gh-pagesブランチを作ります。さくっと作るためにghp-importというPythonパッケージをインストールします。ghp-inmportは指定したディレクトリをgh-pagesブランチにしてくれます。
$ pip install ghp-import
$ ghp-import output
これでgh-pagesブランチが作られたのでpushします。
ユーザーページ(
$ git push origin gh-pages:master
プロジェクトのgh-pagesの場合はそのままローカルのgh-pagesブランチをpushします。
$ git push origin gh-pages
まとめ
Pythonに慣れているのであれば、reStructuredTextとMarkdown両方使えるPelicanはすごく良い気がする。
ドキュメントも英語だけど読みやすくて詳しくまとまっていて良い。
Show comments