Astro v4へのアップグレード
このガイドでは、Astro v3からAstro v4への移行方法について説明します。
古いプロジェクトをv3にアップグレードする必要がありますか?以前の移行ガイドを参照してください。
v3のドキュメントが必要ですか?ドキュメントサイトの以前のバージョン(メンテナンスされていないv3.6のスナップショット)をご覧ください。
Astroをアップグレードする
セクションタイトル: Astroをアップグレードするパッケージマネージャーを使用して、プロジェクトのAstroとすべての公式インテグレーションを最新バージョンに更新します。
# Astroと公式インテグレーションを一緒にアップグレードするnpx @astrojs/upgrade
# Astroと公式インテグレーションを一緒にアップグレードするpnpm dlx @astrojs/upgrade
# Astroと公式インテグレーションを一緒にアップグレードするyarn dlx @astrojs/upgrade
必要であれば、Astroインテグレーションの手動アップグレードも可能です。プロジェクトの他の依存関係もアップグレードする必要があるかもしれません。
Astroを最新版にアップグレードしたあと、プロジェクトへの変更が必要とは限りません!
しかし、エラーや予想外の動作が発生した場合は、変更された内容と、プロジェクトを更新する必要があるかどうかを以下で確認してください。
Astro v4.0は、破壊的な可能性のある変更や、以前に非推奨となっていた機能の削除を含んでいます。
v4.0にアップグレードしたあとプロジェクトが期待どおりに動作しない場合は、このガイドを確認して、すべての破壊的な変更の概要と、コードベースを更新する方法についての手順を確認してください。
完全なリリースノートについては、チェンジログを確認してください。
Astro v4.0の実験的なフラグの削除
セクションタイトル: Astro v4.0の実験的なフラグの削除astro.config.mjs
において、実験的なdevOverlay
フラグを削除し、i18n
の設定をトップレベルに移動してください。
import { defineConfig } from 'astro/config';
export default defineConfig({ experimental: { devOverlay: true, i18n: { defaultLocale: "en", locales: ["en", "fr", "pt-br", "es"], } }, i18n: { defaultLocale: "en", locales: ["en", "fr", "pt-br", "es"], },})
これらの設定、i18n
とリネームされたdevToolbar
は、Astro v4.0で利用可能になりました。
v4.0のブログ記事で、これら2つのエキサイティングな機能の詳細などについて確認してください!
アップグレード
セクションタイトル: アップグレードAstroの依存関係のメジャーアップグレードは、プロジェクトに破壊的な変更をもたらす可能性があります。
アップグレード: Vite 5.0
セクションタイトル: アップグレード: Vite 5.0Astro v3.0では、開発サーバーと本番用バンドラーとしてVite 4が使用されていました。
Astro v4.0は、Vite 4をVite 5にアップグレードします。
どうすればいいですか?
セクションタイトル: どうすればいいですか?Vite固有のプラグインや設定、APIを使用している場合は、Viteの移行ガイドにアクセスして、破壊的な変更を確認し、必要に応じてプロジェクトをアップグレードしてください。Astro自体に対する破壊的な変更はありません。
アップグレード: unified、remarkとrehypeの依存関係
セクションタイトル: アップグレード: unified、remarkとrehypeの依存関係Astro v3.xでは、MarkdownとMDXを処理するために、unified v10およびそれと関連した互換性のあるremark/rehypeパッケージが使用されていました。
Astro v4.0は、unifiedをv11にアップグレードし、その他のremark/rehypeパッケージを最新バージョンにアップグレードします。
どうすればいいですか?
セクションタイトル: どうすればいいですか?カスタムのremark/rehypeパッケージを使用している場合は、それらがunified v11をサポートするように、パッケージマネージャーを使用してすべてのパッケージを最新バージョンに更新してください。使用しているパッケージはastro.config.mjs
で確認できます。
アクティブに更新されているパッケージを使用している場合、大きな破壊的な変更はないはずですが、一部のパッケージはまだunified v11と互換性がないかもしれません。デプロイする前にMarkdown/MDXページを目視して、サイトが意図したとおりに機能しているかどうか確認してください。
破壊的変更
セクションタイトル: 破壊的変更以下の変更は、Astroにおける破壊的な変更と見なされます。破壊的な変更には、一時的な後方互換性がある場合とない場合とがありますが、すべてのドキュメントは、現在サポートされているコードのみを示すように更新されています。
v3.xプロジェクトのドキュメントを参照する必要がある場合は、v4.0がリリースされる前の(メンテナンスされていない)ドキュメントのスナップショットを参照してください。
リネーム: entrypoint
(インテグレーションAPI)
セクションタイトル: リネーム: entrypoint (インテグレーションAPI)Astro v3.xでは、ルートのエントリーポイントを指定するインテグレーションAPIinjectRoute
のプロパティはentryPoint
という名前でした。
Astro v4.0は、他のAstro APIとの整合性を保つために、このプロパティをentrypoint
にリネームします。entryPoint
プロパティは非推奨ですが、引き続き動作し、使用している場合はコードを更新するように促す警告がログに出力されます。
どうすればいいですか?
セクションタイトル: どうすればいいですか?injectRoute
APIを使用するインテグレーションがある場合は、entryPoint
プロパティをentrypoint
にリネームしてください。あなたがAstro 3と4の両方をサポートしたいライブラリの作者である場合は、entryPoint
とentrypoint
の両方を指定できます。この場合、警告はログ出力されません。
injectRoute({ pattern: '/fancy-dashboard', entryPoint: '@fancy/dashboard/dashboard.astro' entrypoint: '@fancy/dashboard/dashboard.astro'});
変更: インテグレーションAPIのapp.render
のシグネチャ
セクションタイトル: 変更: インテグレーションAPIのapp.renderのシグネチャAstro v3.0では、app.render()
メソッドは、routeData
とlocals
を別々のオプション引数として受け取っていました。
Astro v4.0は、app.render()
のシグネチャを変更します。これら2つのプロパティは、単一のオブジェクトにまとめられるようになりました。このオブジェクトと2つのプロパティは、いずれも必須ではありません。
どうすればいいですか?
セクションタイトル: どうすればいいですか?アダプタをメンテナンスしている場合、現在のシグネチャは次のメジャーバージョンまで引き続き動作します。新しいシグネチャに移行するには、複数の独立した引数としてではなく、routeData
とlocals
をオブジェクトのプロパティとして渡します。
app.render(request, routeData, locals)app.render(request, { routeData, locals })
変更: アダプターはサポートする機能を指定する必要があります
セクションタイトル: 変更: アダプターはサポートする機能を指定する必要がありますAstro v3.xでは、アダプターはサポートする機能を指定する必要はありませんでした。
Astro v4.0では、アダプターはサポートする機能のリストを指定するために、supportedAstroFeatures{}
プロパティを渡す必要があります。このプロパティは任意ではなくなりました。
どうすればいいですか?
セクションタイトル: どうすればいいですか?アダプターの作者は、サポートする機能のリストを指定するために、supportedAstroFeatures{}
オプションを渡す必要があります。
export default function createIntegration() { return { name: '@matthewp/my-adapter', hooks: { 'astro:config:done': ({ setAdapter }) => { setAdapter({ name: '@matthewp/my-adapter', serverEntrypoint: '@matthewp/my-adapter/server.js', supportedAstroFeatures: { staticOutput: 'stable' } }); }, }, };}
削除: Shiki言語のpath
プロパティ
セクションタイトル: 削除: Shiki言語のpathプロパティAstro v3.xでは、markdown.shikiConfig.langs
に渡されるShiki言語は、自動的にShikiji互換の言語に変換されました。Shikijiは、Astroが構文のハイライトに使用している内部ツールです。
Astro v4.0は、設定をわかりづらくさせていたShiki言語のpath
プロパティのサポートを削除します。これは、langs
に直接渡すことができるインポートに置き換えられます。
どうすればいいですか?
セクションタイトル: どうすればいいですか?言語のJSONファイルをインポートし、オプションに渡します。
import customLang from './custom.tmLanguage.json'
export default defineConfig({ markdown: { shikiConfig: { langs: [ { path: '../../custom.tmLanguage.json' }, customLang, ], }, },})
以下の非推奨機能へのサポートは終了し、以後はドキュメントの追加もおこなわれません。プロジェクトを適切に更新してください。
一部の非推奨機能は、完全に削除されるまで一時的に機能し続ける場合があります。その他の機能は、単に無効になるか、あるいはコードを更新するように促すエラーが発生します。
非推奨: ビュートランジションのsubmit
イベントのhandleForms
セクションタイトル: 非推奨: ビュートランジションのsubmitイベントのhandleFormsAstro v3.xでは、<ViewTransitions />
コンポーネントを使用するプロジェクトは、form
要素のsubmit
イベントに対する処理を有効にする必要がありました。このためにはhandleForms
プロパティを渡す必要がありました。
Astro v4.0では、<ViewTransitions />
を使用すると、form
要素のsubmit
イベントをデフォルトで処理します。handleForms
プロパティは非推奨となり、何の効果もなくなりました。
どうすればいいですか?
セクションタイトル: どうすればいいですか?ViewTransitions
コンポーネントからhandleForms
プロパティを削除します。これはもう必要ありません。
---import { ViewTransitions } from "astro:transitions";---<html> <head> <ViewTransitions handleForms /> </head> <body> <!-- 色々 --> </body></html>