Astro 6.4
Astro 6.4 がリリースされた。Markdown パイプラインをプロセッサ単位で差し替えられる markdown.processor、高速化を狙う Rust 製 Sätteri、および Cloudflare 上の実験的 advanced routing を扱いやすくする cf() ヘルパーが中心である。既存プロジェクトは npx @astrojs/upgrade、または各パッケージマネージャで astro@latest へ上げて導入できる。
markdown.processor
これまで Astro の Markdown は unified(remark / rehype)前提だった。6.4 では markdown.processor でパイプライン全体を置き換えられる。既定は従来どおり unified() のため、既存構成はそのまま動く。remark / rehype プラグインはトップレベルの markdown.remarkPlugins などではなく、プロセッサへ渡す形が推奨される。
import { defineConfig } from 'astro/config';
import { unified } from '@astrojs/markdown-remark';
import remarkToc from 'remark-toc';
export default defineConfig({
markdown: {
processor: unified({
remarkPlugins: [remarkToc],
}),
},
});markdown.remarkPlugins、markdown.rehypePlugins、markdown.remarkRehype、markdown.gfm、markdown.smartypants は引き続き動作するが非推奨となり、Astro 8.0 で削除される。
Sätteri プロセッサ
別プロセッサとして @astrojs/markdown-satteri が追加された。Rust 実装の Sätteri は unified より高速で、従来プラグインに頼っていた機能の一部をネイティブに持つ。Astro 公式サイトと Cloudflare ドキュメントへの切り替え試験では、それぞれのビルド時間が 1 分以上短縮されたとされている。
import { defineConfig } from 'astro/config';
import { satteri } from '@astrojs/markdown-satteri';
export default defineConfig({
markdown: {
processor: satteri({
features: { directive: true },
}),
},
});Sätteri は remark / rehype プラグインを実行しない。unified 依存の拡張を使う場合は、当面 unified() のままにするか、MDAST / HAST プラグインへ移植する必要がある。将来のメジャーで Sätteri を既定にする意向が示されている。
Cloudflare の cf() ヘルパー
Astro 6.3 で入った実験的 advanced routing を Cloudflare で使う場合、@astrojs/cloudflare の cf() が SESSION KV バインディング注入、ASSETS による静的アセット配信、locals.cfContext、cf-connecting-ip からのクライアントアドレス、waitUntil、プリレンダー済みエラーページなどをまとめて配線する。
カスタム fetch ハンドラでは @astrojs/cloudflare/fetch から読み込む。
import { astro, FetchState } from 'astro/fetch';
import { cf } from '@astrojs/cloudflare/fetch';
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
const state = new FetchState(request);
const asset = await cf(state, env, ctx);
if (asset) return asset;
return astro(state);
},
};Hono では @astrojs/cloudflare/hono のミドルウェアとして app.use(cf()) を先頭付近に置く。
その他
アダプタは preserveBuildServerDir で静的ビルド時も dist/server/ を残せるようになった。プレビューサーバ、転送ヘッダ、React Actions と dep optimizer の競合など、細かな修正も同梱されている。