https://spira-unplugged.github.io/birusupi/
このリポジトリは、GitHub Pages 上で公開している Birusupi サイトのソース一式です。
Jekyll 4 系をベースに、Millennial テーマをカスタムした構成で運用しています。
- Ruby + Jekyll (
~> 4.2) - Sass(
assets/css/main.scss+_sass/) - Jekyll plugins
jekyll-paginate-v2- 高度なページネーション(1ページあたり6件)jekyll-feed- Atom フィード生成jekyll-seo-tag- SEO メタタグ自動生成jekyll-archives- 年/月/タグ別アーカイブページ自動生成jekyll-last-modified-at- 最終更新日時の自動追加jekyll-minifier- HTML/CSS 最小化(JS はオフ)
依存関係は Gemfile と Gemfile.lock で管理しています。
- _posts: ブログ記事(
YYYY-MM-DD-title.md) - pages: 固定ページ(About, Blog, Documentation, GPTs, Playlist など)
- _layouts: レイアウトテンプレート
- _includes: 共通パーツ(header/footer/シェア/Toc 等)
- _sass: セクション別スタイル
- assets: 画像・JS・CSSエントリ
- _data/settings.yml: ナビゲーション/SNS/表示文言設定
- _config.yml: サイト全体設定(
url,baseurl, timezone, plugins など)
補足:
baseurlは/birusupi前提です。- テーマ仕様は millennial.gemspec でも管理しています(
birusupi-theme)。
前提:
- Ruby(Bundler利用可能な環境)
セットアップ:
bundle installローカル起動:
bundle exec jekyll serveブラウザ確認先(通常):
http://127.0.0.1:4000/birusupi/
- Content Security Policy (CSP) -
_includes/head.htmlで厳密な CSP ヘッダーを設定 - 条件付き JS 読み込み -
_layouts/default.htmlで post レイアウトのみ画像ズームと目次 JS を読み込み - 外部リンク対策 - 外部リンクに
rel="noopener noreferrer"を自動付与 - メニュー切り替え - モバイル対応のメニュートグル機能
- Google Analytics 統合 - ページ閲覧イベント自動記録
- 数式表示 -
math: trueをフロントマッターに設定すると MathJax で数式をレンダリング - Spotify 埋め込み - CSP で Spotify iframe を許可
_postsにYYYY-MM-DD-<slug>.mdを追加- Front Matter に
layout,title,categories,tags,excerpt,imageなどを設定 - 記事画像は
assets/img/<post-id>/に配置 bundle exec jekyll serveで表示確認
pages/*.mdを追加または編集- 必要に応じて
_data/settings.ymlのmenuを更新 - レイアウトが必要なら
_layouts/_includes/_sassを更新
_data/settings.ymlのsocialを編集- アイコン表示ロジックは
_includes/header.htmlを参照 - アイコンスタイルは
_sass/_social-icons.scssと_sass/_header.scssを調整
- アーカイブ:
/archive/:year/,/archive/:year/:month/,/tags/:name/で自動生成 - ページネーション:
/page/2/,/page/3/など、1ページあたり6件で自動分割
公開は GitHub Actions 経由で行います。
.github/workflows/pages.yml が bundle exec jekyll build を実行(Ruby 3.3)し、生成した _site を GitHub Pages にデプロイします。
bundle exec jekyll serveでビルドエラーがない- ヘッダー/メニュー/モバイル表示が崩れていない
- 記事内画像パスが正しい(
{{ site.baseurl }}を考慮) url/baseurl前提でリンクが解決できる
MIT License
LICENSE.md