Upgrading to Astro 6.0

calendar_today 2026-06-06
Upgrading to Astro 6.0

はじめに

Astro 6.0 が出てそのうち更新せねばと思っていたのですが、思い立ったので更新します。

Upgrade to Astro v6
How to upgrade your project to Astro v6.0.
Upgrade to Astro v6 favicon https://docs.astro.build/en/guides/upgrade-to/v6/
Upgrade to Astro v6

まず、ドキュメントに従ってアップグレードコマンドを実行します。

pnpm dlx @astrojs/upgrade

package.json が参照している astro のバージョンが 6.4.4 になりました。

ビルドしようとすると、wrangler が要求バージョンを満たさなくなっていたので更新します。

pnpm update wrangler

さらに、src/content/config.ts を src/content.config.ts へ移動せよとメッセージが出るので、言われるがままに移動します。

まだまだ警告やエラーが出るので対応していきます。

Markdown 設定の非推奨警告への対応

対象ファイル:

  • astro.config.mjs
  • 対応: markdown.remarkPlugins は Astro 6.0 より非推奨となったため、@astrojs/markdown-remark から unified をインポートし、markdown.processor 内で適用する形式へと移行しました。
  • 依存関係の追加: pnpm の厳密な依存関係解決(Strict Dependencies)エラーを回避するため、@astrojs/markdown-remark を package.json に開発依存関係(devDependencies)として追加しました。

Vite の Dynamic Import 警告および Wrangler エラーへの対応

対象ファイル:

  • wrangler.jsonc
  • 対応: @astrojs/cloudflare アダプターの新しい推奨設定に合わせ、main フィールドのパスを旧形式(dist/_worker.js/index.js)から、Astro 6.0 の新しい統合エントリーポイントである @astrojs/cloudflare/entrypoints/server へと更新しました。これにより、Vite がビルド時にセッションドライバー用の動的インポートを解析できずに発生していた警告と、Wrangler のビルドエラーが解消されました。

Content Layer API への移行対応

対象ファイル:

  • src/content.config.ts
  • src/utils/blog.ts
  • src/pages/blog/[…slug].astro
  • 対応: src/content.config.ts で loader: glob(…) を使用するように定義を変更し、Zod などのインポート元を Content Layer 対応のものに修正しました。
  • Content Layer エントリーでは post.slug が利用できないため、src/utils/blog.ts にて post.id から slug を解決してマッピングするように修正し、各種インデックスやタグ一覧ページでのリンク崩れとルート競合の警告を防ぎました。
  • 個別記事を表示する src/pages/blog/[…slug].astro にて、従来の非推奨メソッドである post.render() から、新しい render(post) 関数を呼び出す形式へと書き換えました。

SSG(静的サイト生成)構成への見直しと Cloudflare Pages デプロイ問題への対応

対象ファイル:

  • astro.config.mjs
  • wrangler.jsonc (wrangler.jsonc.bak)
  • src/layouts/Layout.astro
  • 対応: 以前は @astrojs/cloudflare アダプターを使用しながら output を未指定(実質 SSG 扱い)にしていましたが、Astro 6 へのアップデートに伴い、アダプターがある状態での静的ビルドは成果物が dist/client/ に出力される仕様に変更されました。この結果、Cloudflare Pages のデプロイ先(dist)とズレが生じ、公開ディレクトリが 404 になる問題や最新ブログ一覧が更新されない事象が発生していました。このブログは動的処理を伴わない純粋な SSG で良いため、astro.config.mjs から cloudflare アダプターを削除し、純粋な静的サイトとしてビルドされるように戻しました。これにより、ビルド結果が dist/ 直下にフラットに生成され、デプロイが正常に機能するようになりました。

おわりに

いくつかエラーや警告が出て多少手こずる部分もありましたが、ドキュメントとエラーメッセージを一つずつ対処して、無事に Astro 6 へのアップデートを完了できました。

label Tags: #Astro