org-mode
で本ブログを生成しました (リポジトリ) 。簡単に紹介します。
本当はミラーボールを回したかったですが、力不足だったようです。
org-publish
ベースの SSG
背景
Org はマークアップ言語です。主に Emacs ユーザに利用されています。
Emacs のエディタ拡張 org-mode
には、
.org
ファイルを任意のフォーマットに変換するコマンド (org-publish
)
が付属します。これを SSG として利用すると、フラットなサイトを簡単に生成できます。
ファイル構成
本ブログのファイル構成は以下です:
.
├── 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 製