アップグレード…何と怖い響きだろう。もしアップグレードで通常通り動作しなかったら、と考えるとつい二の足を踏んでしまう。
しかし、今ちょうど連休で時間もあるので、意を決してAstroのアップグレードを行うことにした。2024年5月現在の最新バージョンはv4.7.1、当ブログのバージョンはv3.4.3(2023年11月版)である。
アップグレード方法
何はともあれ、公式ページを見ましょう。
npm、pnpm、Yarnによるアップグレード方法が紹介されている。古いバージョンは手動アップグレードも必要かもしれないが、半年以内のバージョンであれば恐らく不要だろう。
# npmの場合
npx @astrojs/upgrade
上記コマンドをAstroのローカルリポジトリで実行すると、依存パッケージも含めてアップグレードしてくれる。
Need to install the following packages:
@astrojs/[email protected]
Ok to proceed? (y)
メッセージが出るので、y
で進む。
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@astrojs/[email protected]',
npm WARN EBADENGINE required: { node: '^18.17.1 || ^20.3.0 || >=21.0.0' },
npm WARN EBADENGINE current: { node: 'v18.15.0', npm: '9.5.0' }
npm WARN EBADENGINE }
astro Integration upgrade in progress.
● @astrojs/partytown will be updated to v2.1.0
● @astrojs/rss will be updated to v4.0.5
● @astrojs/tailwind will be updated to v5.1.0
▲ astro will be updated to v4.7.1
wait One package has breaking changes. Continue?
● Yes ○ No
何か怖いやつが連発した。どうやらNode.jsのバージョンが古いらしい。
一旦▶
キーでNo
を選択して終了した。
Node.jsをバージョンアップ
エラーメッセージによると、当ブログのNode.jsのバージョンはv18.15.0(npmはv9.5.0)、Astro v4.7.1で必要なNode.jsのバージョンは、v18.17.1 または v20.3.0 またはそれ以上である。
ちなみに、Astroではv19系はサポートしていない(Install Astro with the Automatic CLI | Docs)
私のローカルPCでは、VoltaでNode.jsの管理を行っている。管理者権限でコマンドプロンプトを立ち上げ、以下コマンドでv20の最新版をインストールした。
volta install node@v20
ツールマネージャーVoltaについてはこちら
インストールが完了すると、あっさりしたメッセージが出る。
⠁ Fetching public registry: https://nodejs.org/dist/index.json
念のため、Node.jsとnpmのバージョンを確認。
node -v
v20.12.2
npm -v
10.5.0
Node.jsとnpm両方がバージョンアップされた。
再度Astroのアップグレード
再度リポジトリでnpx @astrojs/upgrade
する。
astro Integration upgrade in progress.
● @astrojs/partytown will be updated to v2.1.0
● @astrojs/rss will be updated to v4.0.5
● @astrojs/tailwind will be updated to v5.1.0
▲ astro will be updated to v4.7.1
wait One package has breaking changes. Continue?
● Yes ○ No
Enter
キーでYes
を選択。breaking changes
って響きが怖いな。公式サイトにも「Astro v4.0は、破壊的な可能性のある変更や、以前に非推奨となっていた機能の削除を含んでいます。」とある。v3からv4へのメジャーアップグレードだから当然か。
check Be sure to follow the CHANGELOG.
astro https://docs.astro.build/en/guides/upgrade-to/v4/
✔ Installed dependencies!
+—————+ Houston:
| ^ u ^ Have fun building!
+—————+
かわいい絵文字とともに、アップグレードが完了した。
ローカルでサイトを起動してみる。
$ npm run dev
> [email protected] dev
> astro dev
13:02:30 [vite] Re-optimizing dependencies because lockfile has changed
astro v4.7.1 ready in 5338 ms
┃ Local http://localhost:4321/
┃ Network use --host to expose
13:02:31 watching for file changes...
非推奨の機能は使っていなかったので修正する箇所はなく、無事バージョンを移行することができた。
アップグレードによる主な変更点
v4.5から新機能「Dev Audit UI」が追加された。ローカルでサイトを立ち上げると、ページ下部にバーが隠れて見えているので、クリックするとコードの問題部分を指摘してくれる。
具体的な内容は、バーの右から2番目の「Audit」ボタンをクリックすると見ることができる。
遅延ライブラリ「Partytown」とシンタックスハイライター「Shiki」が吐き出しているコードでエラーが出ていた。エラーは出来るだけ潰したいが、インテグレーション由来のエラーではどうすることもできない。
追記
アップグレードする前に確認しておけというかんじだが、Cloudflare PagesのNode.jsはv20にも対応していた。ビルドエラーを起こしたらどうしようと思ったので、安心した。
In case you missed it, @CloudflareDev Pages now supports Node.js 18 (and above!)
— Walshy (@WalshyDev) April 12, 2023
Just add a `NODE_VERSION` environment variable with the value of `18` (or `19` if you want the latest latest) and you're good to go!
Node.jsのバージョンが古いことで有名だったCloudflare Pagesだが、2023年4月頃に全バージョン対応になったそうだ。これからも対応してくれると思ってよいのだよね??