はじめに
静的サイトジェネレータHugoの1年間を振り返ってみます。
ただし、0.xx.y形式のバグフィックスや小さい改善のみのバージョンは除きます。
Page Bundlesサポート
いきなり2017年のリリースから始まってますが、Page Bundlesのサポートが入りました。
Page Resourcesをまとめるための機能で、画像を多く使うサイトで便利です。
(逆に言えば自分は使ってない・・・)
- 2017-12-31: Hugo 0.32: Page Bundles and Image Processing! | Hugo
- 2018-01-18: Hugo 0.33: The New Kinder Surprise! | Hugo
- 2018-01-22: Hugo 0.34: Pattern matching to filter images and other resources | Hugo
- 2018-01-31: Hugo 0.35: Headless Bundles! | Hugo
- 2018-02-05: Hugo 0.36: Smart Image Cropping! | Hugo
- 2018-02-27: Hugo 0.37: Preserve PNG Colour Palette | Hugo
Page BundlesにはLeaf Bundleという形式があり、部品に分けて管理することができます。
Wikipediaでのテンプレートのような機能が実現できるようです。
地味な改善(0.38〜0.41)
内部を整理したり、機能的には地味なものが多いです。
- 2018-04-02: Hugo 0.38: The Easter Egg Edition | Hugo
- 2018-04:16: Hugo 0.39: The Nat King Cole Stabilizer Edition | Hugo
- 2018-04-23: Hugo 0.40: The Revival of the Shortcodes | Hugo
- 2018-05-25: Hugo 0.41: Privacy Configuration for GDPR | Hugo
テーマコンポーネント(0.42)
ここまでは個人的にグッとくる機能はなかったのですが、
0.42で導入されたテーマコンポーネント機能は気に入っています。
これは何かというと、テーマを分割する機能です。
これまではテーマは1つしかなかったため、どうしてもごった煮になってしまいました。
0.42からは、ショートコードのみのテーマなど、小さく分割することができます。
自分は以下のようなテーマコンポーネントを作成しました。
- hugo-amazon-jp: Amazonのアフィリエイトリンク作成
- hugo-external-site: 外部サイトをFront Matterで設定
- hugo-related: 関連ページを明示的に指定
- hugo-interactive: インタラクティブ化
- hugo-random: ランダムジャンプページ
- hugo-toc-fix: 目次の修正
- hugo-prism: コードのハイライト
- hugo-search: 全文検索
Hugo Pipes(0.43〜0.44)
今年一番の機能は、このHugo Pipesです。
- 2018-07-09: And Now: Hugo Pipes! | Hugo
- 2018-07-13: Hugo 0.44: Friday the 13th Edition | Hugo
- 2018-07-22: Hugo 0.45: Revival of ref, relref and GetPage | Hugo
- 2018-08-01: The Summer of Hugo | Hugo
- 2018-08-17: Output Minification, Live-Reload Fixes and More | Hugo
このHugo Pipesにより、以下のような機能がサポートされました。
- Cache Busting
- Minify
- Sass/SCSSのサポート
- ただしNetlifyでは以下の問題により、サポートされていません。
地味ですが個人的に嬉しかったのが0.45での.GetPageの改善で、
{{ with .Site.GetPage "section" "blog" }}
以前はこう書いていたのが、より自然な形で書けるようになりました。
{{ with .Site.GetPage "/blog" }}
Go 1.11対応(0.48)
- 2018-08-29: This One Goes to 11! | Hugo
Hugoのテンプレートの書きづらかった点が、変数のスコープでした。
以前は回避するために.Scratchを使っていましたが、不要になりました。
Directory Based Archietypes(0.49)
- 2018-09-24: Hugo 0.49: Directory Based Archetypes | Hugo
Archetypesという、新規コンテンツのためのテンプレートの仕組みがありますが、
これがPage Bundlesに対応しました。
エラー処理の改善(0.50〜0.51)
- 2018-10-29: Hugo 0.50: Errors so Good, You’ll Want to Fail! | Hugo
- 2018-11-07: Hugo 0.51: The 30K Stars Edition! | Hugo
エラー処理を改善した結果、5%速くなって8%メモリ消費が減ったという嬉しい副作用がありました。
インラインショートコード(0.52)
- 2018-11-28: And Now: Hugo 0.52 | Hugo
Markdownの中にショートコードが書ける機能が追加されました。
これは、BootstrapのドキュメントをHugoに移行するというIssueで出た機能です。
現在のHugo
ikemo memoという個人的なメモサイトを作っていますが、
ガリガリにカスタマイズしたテンプレートに、1200記事、1800ページを作って、わずか4〜5秒でビルドされます。
今のHugoで足りないのは、日付によるアーカイブ機能くらいでしょうか。
StaticGenを見ると、スターの勢いはJavaScript系に押されていますが、
Hugoはビルドの速さではダントツです。
なので、今後も独自の立ち位置で進化し続けるかなと。