org-publish ベースの SSG
org-mode で本ブログを生成しました (リポジトリ) 。簡単に紹介します。
本当はミラーボールを回したかったですが、力不足だったようです。
背景
Org はマークアップ言語です。主に Emacs ユーザに利用されています。 Emacs のエディタ拡張 org-mode には、 .org ファイルを前提とした SSG (org-publish) が付属します。 org-publish によってフラットなファイル構成のサイトを簡単に生成できます。
ファイル構成
本ブログのファイル構成は以下です:
.
├── build.el # ビルドスクリプト + ビルド設定 (ELisp)
├── out # サイト
├── src # サイトの全ソースファイル
└── x # ビルドスクリプトを起動するシェルスクリプト
src/ ディレクトリの内容は以下になります。下書きファイルを *.draft.org とし、 release ビルド時は無視します:
src/
├── img # 画像ファイル
├── index.org # 索引 ("sitemap". `org-publish` が自動生成する)
├── *.org # 投稿記事
├── *.draft.org # 下書き (`--release` ビルドの際は無視される)
└── style # CSS, JS
CLI
x のサブコマンドを紹介します:
./x build:srcディレクトリをビルドします。./x serve: ローカルサーバを立ち上げます。./x watch: ソースファイルの変更時に自動的にリビルドします。
主なリソース
org-mode でブログ生成したいという人がいたら、以下のリンクが役に立つかもしれません。
参考記事
org-publish の公式マニュアルが説明不足なので、チュートリアルが重宝します:
- Build Your Website with Org Mode - System Crafters
org-publishと Simple.css で綺麗なブログを作ります。 - Building a Emacs Org - Mode Blog
似た内容ですが ELisp の書き方が参考になります。
The Org Manual
公式マニュアル です。意外に短くて説明不足の感はあります:
- 13. Exporting
- 13.9 HTML Export
ヘッダ生成などのオプションを設定できます。ただし自由度が低いので、自分で HTML テンプレートを書くのが良いと思います。 - 13.17 Advanced Export Configuration
ox-htmlの HTML テンプレートを差し替えることができます。またフィルタを使ってコードブロックの HTML 変換などをオーバーライドできることがわかります。
- 13.9 HTML Export
- 14. Publishing
org-publishのオプションを把握することができます。
HTML 生成の改良
HTML 生成をハイジャックして完成です:
- publish.el (System Crafters website)
esxml を使ってテンプレート HTML を作成します。 - Add syntax highlighting to an org-publish-project
コードブロックを Prism.js 対応の HTML に変換するフィルタが載っています。
その他
Org 製のブログ
見かけるたびに追記します。
- m13o.net:
org-publish製 - Thomas Ingram:
org-publish製 - System Crafters:
org-publish製? - Distro Tube:
org-export製 - Conao3 Note: Hugo 製