このブログは長らくLumeを用いてブログのビルドをしていたんですが、最近になってox-contentへ移行したのでその話を書いていきます。
動機
主にビルド速度です。 数ヶ月前からブログのデプロイ速度を高速化する施策を行っていて、その一環でこれまで行っていた最適化処理をCloudflareへ移行したり、OG生成をworkerへ切り分けたりしていました。
そんなこんなでリリースビルドの速度自体は5分以上から3分程度と大幅に高速化できました。 しかし、実際に記事を書いている際のプレビュービルドについて、Lumeは少しでも変更があった際にフルビルドが走る挙動をしていたため、記事の文字がプレビューに反映されるまでに数分はかかっていました。
これについては、コンポーネントを`import`じゃなくてちゃんとLume由来の`component`を用いて使用するだとか、そのあたりを改善すればまだ使えたのかなとか今更ながら思ったりしています。 しかし、開発体験の悪さは流石に無視できない問題となっていました。
また、このブログには既に300近い記事が存在しており、今後も記事が増えていくことが想定されています。 そんななか、JS系のSSGを使用し続けることでビルドのパフォーマンスが再び悪化していかないか不安がありました。
そんな折に某Vueの王国にて王者がめちゃくちゃ速いSSGを作っていると聞いて、じゃあ使ってみようかなと興味を持ったのがox-content移行のきっかけでした。
移行手順
リンク切れがあるとまずいので、まず既存のLumeのブログのURL構造を全て洗い出してゴールデンテストを作成しました。 一通りテストケースが作成できた後は順次ページをox-contentに移行させるという流れで移行を行いました。
移行作業自体は一週間もかからずに行えたんじゃないかなと思ってます。
移行してみて
Rust製ということもあってめちゃくちゃ速いです。 ビルド時間が3秒かかっていないので、これなら当分記事が増え続けてもビルド時間で悩むことはないだろうと思っています。
また、一番嬉しかったのは開発ビルドにて差分ビルドが適用されるので記事を書くと内容がすぐにプレビューへ反映されるのが嬉しいです。