EY-Office ブログ

Astroをバージョン4.0に更新した、そしてBun

先週 ホームページ構築ツールのAstroをバージョン3.6に更新しました というブログを書いたら、その日に Astro 4.0 がリリースされました❗

3.6にアップデートしておいて良かった・・・😃

Astro 4.0は、

など、たくさんの新機能が実装されています。

Astro

Astro4.0へのアップグレード

EY-Office のサイトに直接関係がありそうなのはIncremental Content Cachingでしょうか、とりあえずAstro4.0へのアップグレードしました。

公式ドキュメントの Astro v4へのアップグレード に書かれているようにnpx @astrojs/upgradeを実行しました。

しかし、エラーになってしまいました。🥹

$ npx @astrojs/upgrade

 ・・・

██████  Installing dependencies with npm...
      ▲  error Dependencies failed to install, please run the following command manually:
npm install @astrojs/mdx@2.0.0 @astrojs/rss@4.0.1 astro@4.0.3
$

エラーメッセージの最後にある以下の行を実行しましたが、依存関係のエラーになってしまいました。

$ npm install @astrojs/mdx@2.0.0 @astrojs/rss@4.0.1 astro@4.0.3

原因は、 @astrojs/mdx@2.0.0astro@4.0.3 に依存しているので、まず astro@4.0.3 をインストールしないと行けないのです。以下の様に実行したところアップグレードが成功しました。

$ npm install astro@4.0.3
   ・・・
$ npm install @astrojs/mdx@2.0.0 @astrojs/rss@4.0.1
   ・・・
$ npx @astrojs/upgrade

astro   Integration upgrade in progress.

      ◼  astro is up to date on v4.0.3
      ◼  @astrojs/mdx is up to date on v2.0.0
      ◼  @astrojs/rss is up to date on v4.0.1

      ✔  Beautiful. Your integrations are up-to-date.

さて、速度はどうでしょうか ?
前回と同じ、ビルドastro buildの実行時間を計測してみました。

バージョンビルド時間
2.38.4 秒
3.67.7 秒
4.07.9 秒

あれ! 遅くなってる。🥹

さらなる高速化(1)

みなさん、Bun を知っていますか、最近あらわれた Node.js 互換のJavaScript実行環境です。肉まんのアイコンが可愛いですね。😄

Bun

ホームページにあるように Bun の特徴の1つは高速性です。さらにNode.jsと互換性が高いのでBunをインストールすれば、Astroは動きます。Astroのドキュメントにも Use Bun with Astro というページも正式にサポートされているようです。

Bunのインストール手順はInstallationに書かれていますが、私はHomebrewを使っているので、brewコマンドでインストールしました。

$ brew tap oven-sh/bun
$ brew install bun

ビルドの実行時間ですが、Node,js + バージョン3.6より早いですね。😃

JSバージョンビルド時間
Node.js2.38.4 秒
Node.js3.67.7 秒
Node.js4.07.9 秒
Bun1.07.4 秒

さらなる高速化(2)

Astro4.0には Incremental Content Caching (Experimental) があります、Astroドキュメントのビルド時間が80%も速くなったと書かれています❗

早速に設定を追加し試しましたが、わずかにしか早くなりませんでした。🥹

この機能はAstro V2で導入されたコンテンツコレクションのAPIをキャッシュしているようです。実はEY-Office サイトはAstro V1で作られているので高速化されないのかも知れません。

ここが次の課題ですね。つづく・・・

- about -

EY-Office代表取締役
・プログラマー
吉田裕美の
開発者向けブログ