静的ブログジェネレーターTuzuruのベータ版をリリースした
静的ブログジェネレーターのTuzuruのベータ版(^1)としてリリースした(0.1.2)。GitHub Pagesでシンプルにブログを立ち上げたい人向けのCLIだ。 せっかく作ったのでこのページで紹介したい。
https://github.com/ainame/tuzuru
Tuzuruはいわゆる静的サイトジェネレーター(static site generator)の一種のCLIで、ブログ以外の用途を考慮してないので静的ブログジェネレーターと勝手に名乗っている。この記事もTuzuruで生成してGitHub Pageにカスタムドメインを設定してホストしている。
もしGitHub Pageでブログをホストしてみたい人がいたら試してみて欲しい。 フィードバック大歓迎。
(ロゴはGeminiで適当に生成した)
(^1)ここまではmainブランチ上で勢いよく開発してきたが、これ以降は簡易的にPRベースで開発していこうという気持ち。
特徴
一度過去に作ったHugoのブログを復活させようとして断念してTuzuruの開発を始めた経緯があるので、可能な限りシンプルに使うことを意識して設計した。特徴としては、
- プレーンなMarkdownのみで記事を書けて直感的
- YAML front matterのsyntaxを覚える・思い出す必要のない
- 代わりにgit logから投稿日時やauthor名を取ってくる
- デフォルトで多分いい感じに動く&必要な設定が最小限
- 設定せずにトップページや年別・カテゴリ別リストが自動生成される
- シンプルなレイアウト
- Swiftで書かれている
- そこそこ実行速度早い(ベンチマークしてないけど内部でGitコマンドを呼び出している箇所がボトルネックにはなりそう)
- Linux向けにはStatic Linux SDKで静的なバイナリになっているのでインストールが簡単
デモ
こちらは、動画とは別にホストしているランダムなAI生成のデモページ。
https://ainame.github.io/tuzuru-demo/
主な機能
現状では以下のサブコマンドが存在している。
tuzuru
-tuzuru generate
が実行されるtuzuru init
- 設定ファイル(tuzuru.json
)や、テンプレート生成などプロジェクトの初期化tuzuru generate
-contents/
以下においたMarkdownファイルをHTMLに変換する、リスティングページを生成するtuzuru amend
- Gitの歴史を書き換えずにTuzuru上での記事の投稿日時やauthor名を後で変えるための仕組み(マーカー付きのGitコミットを作る)tuzuru import
- Hugo向けに書かれたMarkdownを簡易的にimporttuzuru serve
- プレビュー用の組み込みHTTPサーバー
他にも
- 自動でリスティングされないページが作れる(/aboutみたいなのが作れる)
- Xのリンクを貼ると自動で埋め込み用のHTMLに変換出来る
- プレビュー用の組み込みHTTPサーバーがHot Reloadに対応
- CSS cache busting
- OGタグ
- sitemap.xmlの自動生成
- Homebrew/npmでのインストール
GitHub Pageへの簡単デプロイ
リポジトリの設定でGitHub Pageの設定を有効にして、これを .github/workflows/deploy.yml
におくだけでdeploy出来る。
ainame/tuzuru
においてある actionを再利用できるようになっていて、
actions/checkout
と ainame/Tuzuru/.github/actions/tuzuru-deploy
の 2 stepsだけ書けば良くなっている。
name: Deploy
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: ainame/Tuzuru/.github/actions/tuzuru-deploy@0.1.2
実装の中の個人的な面白ポイント
まとめ
シンプルだけどそれなりに欲しい機能が揃ったやつが出来た。 もし試してみて良かったらスター下さい。
👉 GitHub: ainame/tuzuru