静的サイトジェネレータ

概要

いくつかの目的のため静的サイトジェネレータを自作している。

目的

  • standard.site1に対応したサイトを生成できる。
  • 文章をモダンなフォーマットで記述できる。
  • サイトのビルド手順にカスタマイズが簡単にできる。
  • ビルドのカスタマイズとHTMLのテンプレートを同じプログラミングで言語で記述できる。

構成

目的に合うよう以下のような構成とした。

  • サイトのビルドの細かいタスクをAPIとしてRustで記述。
  • ビルドはRustに組み込んだScheme(Steel2)で行う。
  • HTMLのテンプレートもSchemeで記載する。
  • 文章はDjot3で記載する。

実装が終わった部分

  • Djotの文章をHTMLに変換
    • Rust用のDjotのライブラリが優秀で実装の課題はほとんど出なかった。
    • ローカルの文章間のリンクがHTML化したときも動作するようにした。
  • HTMLのテンプレートをSchemeで定義する
    • S式によるテンプレートは関数による部品化もしやすくて結構気にいった。HTMLのテンプレートが必要なプログラムを作るときはまたこの方式を採用するかも。
  • standard.siteに対応したサイトのビルド
    • サイトのPublishはWebAPIで簡単にできるのでプログラムには組み込んでいない。
    • 記事のPublishは記事が増えるたび行う必要があるのでプログラムに組み込んでみた。
    • 記事のHTMLに記事のIDを埋め込んでおき、それを指定してWebAPIでPublishする。
  • ATOM対応
  • NeocitiesにビルドしたHTMLをデプロイする機能
  • Sassを使ってCSSをビルド
  • CSSとHTMLのMinify
  • 文章の見出しの自動生成

  1. https://standard.site/↩︎

  2. https://mattwparas.github.io/steel/book/↩︎

  3. https://djot.net/↩︎