Hexoを5.0.0へバージョンアップした

7月29日にHexo 5.0.0がリリースされていたので、このブログも5.0.0へバージョンアップしました。

新機能とか

リリースノートを見てみるといろいろ書いているのですが、このブログで大きな影響を受けたのがpermalinkの仕様変更です。記事のfront-matterでの挙動にBreaking Changeが入っています。

前の記事で書いたとおり、このブログではpermalinkに乱数を逐一指定することによって、URLがファイル名やディレクトリ構造の変更の影響を受けないようにしていました。

今までこのFront-matterはconfig.ymlのpermalinkでいうところの、:titleだけを上書きするような挙動だったんですね。公式のドキュメントではURLを上書きするという説明がされているので、不思議な動きをするなと思いつつ、それを逆手に取って便利に利用させてもらっていたのですが、この5.0.0で誰もが期待するであろう挙動に変更されました。

この仕様変更によって、記事ページのすべてが開けなくなり、拡張子のついていない謎のファイルがいきなりダウンロードされるという、とんでもない状況になったのですが、過去記事のpermalinkをオリジナルのpost_idに一括置き換えすることで事なきを得ました。

個人的には大迷惑を被ったわけですが、こちらの方が断然使いやすいので仕様変更には賛成です。

他にもuse_date_for_updatedが非推奨になり、updated_optionに置き換わっていたり、ローカルサーバーを立ち上げる前にconfigのバリデーションが入ったりなど、いろいろな箇所に変更が加わっています。

このブログを立ち上げた当初はバージョンが3.8.0で、config.ymlも継ぎ足しまくって訳分からなくなっていたので、hexo initで立ち上げた新しいブログからconfigを拝借し、イチから書き直したりしました。

ついでに

このバージョンアップにかこつけて、いつかはやらないといけないと思っていたものを一遍にやっつけました。

今後の保守性や他のジェネレーターに移行する可能性(今のところその予定はない)を加味し、このブログでしか動かないような記述を排除したり、プレーンな状態のHexoで動くよう、テーマをリファクタリングしました。

  • OGPタグをヘルパーで出すように変更(何故か今まで意固地になって全て自力で書いていた)
  • Analyticsをスクロールで読み込むように改造していたのをやめた
  • ejsのテンプレートの中で、URLなどを直接記述するのを避け、configを参照するようにした
  • プラグインを公式のもので揃えた
  • ressをアップデート
  • パンくずリストやサイドバーのアーカイブ、ページャーの闇が深すぎるJSを書き直し
  • 日本語カテゴリー・タグのスラッグ廃止(めんどくさい)
  • アーカイブページでtitleがundefinedになるのを修正
  • 2020年1月25日以前の記事のパーマリンクも全て乱数に&301リダイレクト
    • 一括置き換えしたいときに後々都合が悪くなる
  • パンくずリスト以外の構造化マークアップ廃止
  • 記事ページのカテゴリー一覧で、現在のカテゴリーをハイライト表示するのを廃止(カテゴリーページと記事ページとで光らせる意味合いが変わってややこしい)
  • ::selectionの装飾廃止
  • 過去記事のいらないFront-matterを削除
  • 記事内装飾の変更
    • blockquoteの装飾を簡素なものに変更(CSSがパワーオブパワーで汚かった)
    • リンクを下線なしに
  • 記事内でしか使わないCSSをサイト全体のCSSから切り離し
  • 記事内でしか読み込まないCSSファイルをインライン化
    • 保守がめんどくさかった。W3Cのバリデーションでエラーが出るがそれは必要悪ということで
  • 記事内テンプレートの廃止(ブログカードなど)
  • サイト上の文字サイズの全てに調和数列を導入

gitのコミットログから書き出してみました。今まで肩に乗っかっていた荷がすべて降りたような、そんな清々しい気持ちです。