AstroでブログをつくってCloudflare Pagesにデプロイした
静的サイトジェネレーターのAstroを使ってブログを構築し、Cloudflare Pagesで公開するまでの手順まとめ。
このブログはAstroで作り、Cloudflare Pagesにデプロイしています。構築の流れをざっくりまとめておきます。
Astroを選んだ理由
静的サイトジェネレーターはいくつか試したことがあるのですが、Astroを選んだ理由は主に2つです。
- デフォルトでJavaScriptが少ない — ブログは基本的にテキストコンテンツなので、余計なJSを送らないAstroのアーキテクチャが合っています
- Markdownのサポートが手厚い — Content Collectionsという仕組みで、型安全にMarkdown記事を管理できます
セットアップの手順
プロジェクト作成
npm create astro@latest my-blog -- --template minimal
cd my-blog
npm install
Content Collectionの設定
src/content/config.ts にスキーマを定義します。
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.coerce.date(),
tags: z.array(z.string()).optional(),
}),
});
export const collections = { blog };
あとは src/content/blog/ にMarkdownファイルを置けば記事として認識されます。
Cloudflare Pagesへのデプロイ
Cloudflare PagesはAstroの静的出力に完全対応しています。
- GitHubにリポジトリをpush
- Cloudflare DashboardでPages > Create a projectから連携
- ビルドコマンド:
npm run build、出力ディレクトリ:distを設定
これだけで自動デプロイが動くようになります。プッシュするたびにビルドが走って、数十秒で公開されます。無料枠でも十分すぎるくらい使えます。
まとめ
Astro + Cloudflare Pagesの組み合わせは、シンプルなブログには非常に良いと思いました。ビルドが速く、ランニングコストもほぼゼロ。Content Collectionsのおかげでコンテンツ管理も楽です。