Jekyll Blogging お試し
Ruby製の静的ウェブサイト生成ツール(Static Site Generator)。なんかMarkdownとかで書いたサイトをいい感じにHTMLにしてくれるやつ。
Dockerイメージの準備
Ruby, RubyGems, gcc, makeが入っていれば動くらしい。公式Dockerイメージもあるみたいだけど、あえてスルーしてrubyイメージからやってみる。
ふだんRubyは使わないので試行錯誤。
まずはイメージをビルド。
FROM ruby:2WORKDIR /codeRUN gem install jekyll bundler
ここでgem install
してもいいのか、という問題がありそうだけどよくわからない..(キャッシュについてはいいとして)
sudo docker build . -t myjekyll
ひとまずこれでイメージの準備はできた。
sudo docker run --rm -v `pwd`/myblog:/code -e BUNDLE_PATH=vendor/bundle myjekyll jekyll new ./
これで./myblog
(/code
)に新しいJekyllプロジェクトが生成される(合わせて依存ライブラリがmyblog/vendor/bundle
にインストールされる)。
vendor
を除いたフォルダ構成はこんな感じ。
myblog/├── 404.html├── about.markdown├── _config.yml├── Gemfile├── Gemfile.lock├── index.markdown└── _posts└── 2020-05-31-welcome-to-jekyll.markdown
もし既存のプロジェクトを使う場合、bundle install
でライブラリを取得する(Gemfileに書かれた依存ライブラリがmyblog/vendor/bundle
にインストールされる)。
sudo docker run --rm -v `pwd`/myblog:/code -e BUNDLE_PATH=vendor/bundle myjekyll bundle install
最後に開発用サーバを立てる。
sudo docker run --rm -v `pwd`/myblog:/code -e BUNDLE_PATH=vendor/bundle -p 4000:4000 myjekyll bundle exec jekyll serve -H 0.0.0.0 -P 4000
http://localhost:4000
でチェック。
ディレクトリ構成
./
Gemfileなどがあるディレクトリ。ここはテンプレート(テーマ)置き場に使うみたい。
デフォルトでindex.markdown
ファイルはこうなっていた。
---# Feel free to add content and custom Front Matter to this file.# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaultslayout: home---
_posts/
記事のMarkdownファイルをおく場所。
サンプル記事2020-05-31-welcome-to-jekyll.markdown
の冒頭(適当に改行を入れた)はこうなっていた。
---layout: posttitle: "Welcome to Jekyll!"date: 2020-05-31 13:16:10 +0000categories: jekyll update---You’ll find this post in your `_posts` directory. Go aheadand edit it and re-build the site to see your changes. Youcan rebuild the site in many different ways, but the mostcommon way is to run `jekyll serve`, which launches a webserver and auto-regenerates your site when a file is updated.
ヘッダ部分(最初の---
で囲まれた場所)をFront Matter
というらしい(YAMLフォーマット)。ここにメタデータを書く。
_site/
ビルドされた静的サイトを構成するファイル群が出力される場所。
基本的なコマンド
jekyll build
Jekyllが生成した静的サイトを構成する ファイルは_site
ディレクトリ以下に出力される。自分の作成したMarkdown記事からHTMLを生成するときはjekyll build
を実行する。
jekyll serve
開発用サーバを立ち上げるコマンド。生成された静的サイトを確認するときはjekyll serve
を実行する。デバッガ(プレビュー)的な機能があるようで、変更が自動的に反映される(自動的にjekyll build
してくれる)らしい。記事以外を編集した場合は反映されないみたい?
記事(Post)の作成
_posts
ディレクトリ内に.md
/.markdown
ファイルを増やせば よい。サンプル記事に書いてあるのだが、ファイル名はYEAR-MONTH-DAY-title.MARKUP
にする必要があるらしい。
2020-05-31-my-first-post.md
---layout: posttitle: "My First Post!"date: 2020-05-31 22:05:00 +0900tag: First Posttag: Greeting---Hello Jekyll!- [Jekyll](https://jekyllrb.com/)
テーマの変更(例:Minimal Mistakes)
Jekyll 3.2からgemでデフォルトのテーマを導入するようになったらしい。デフォルトはminima
。
そのため_layouts
, _includes
などのテーマ編集用のファイルが新規プロジェクトに生成されなくなった。
試しにテーマをMinimal Mistakes
に変更してみる。
まずGemfileを編集し、以下の行を追加する。
# https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/gem "minimal-mistakes-jekyll"
次に_config.yml
のtheme
を変更するのだが、他にも色々とテーマに依存した設定をこのファイルに書くようなのでGitHubから持ってきて置き換えた方がいい気がする。
# theme: minimatheme: minimal-mistakes-jekyll
デフォルトのindex.markdown
をMinimal Mistakesのindex.html
に置き換える(index.markdown
を削除、index.html
をダウンロードして置き換えなど)
投稿のlayout
がpost
からsingle
になっているので各Markdownファイルを修正する(about.markdown
も忘れずに、あるいは削除)。
それから、タグ検索ページ を追加する。_pages/tag-archive.md
を下からコピーしてくればOK(_config.yml
はリポジトリのものに置き換えたと想定)。
これでbuild
すればテーマが変わる。細かい作業が多くて結構面倒くさい..。Git管理することを考えて、できる限りもとのファイルを維持したまま置き換えようとしたからかな? 諦めて_posts
だけを移行するようにして、丸ごと入れ替えてしまったほうが楽だったかもしれない。なんか昔のHTMLテンプレートを記事だけ使いまわせるようにした、みたいな...。
コマンドで新規記事をテンプレートから作成できそうなのも見かけたし、記事を書くときにも色々追加記法があって、それからテーマの作成についても書こうかと思っていたけど、また今度。