このリポジトリは個人ブログblog.s2n.techのソースコードです。静的サイトジェネレーターであるAstroを中心に、MDXを用いた記事管理やTailwind CSSでのスタイリングを行い、最終的にCloudflare Workersへデプロイされます。
- Astro
- MDX
- Tailwind CSS
- TypeScript
- pnpm
- ESLint / Prettier(
@shun-shobon/style-guideを利用) - Cloudflare Workers & Wrangler
- GitHub Actions
バージョンはmise.tomlにより固定されています。開発を行う場合はmiseの使用を強く推奨します。
# miseのセットアップ
mise install
# 依存関係をインストール
pnpm install
# 開発サーバーを起動
pnpm dev
# → http://localhost:4321 が既定ポート(変更可)| コマンド | 説明 |
|---|---|
pnpm dev |
ローカル開発サーバーを起動 |
pnpm build |
本番用静的アセットを dist/ に出力 |
pnpm preview |
Wrangler を用いてローカルで Cloudflare Workers としてプレビュー |
pnpm lint |
ESLint による静的解析 |
pnpm lint:fix |
ESLint の自動修正 |
pnpm format |
Prettier によるフォーマット |
pnpm typecheck |
TypeScript 型チェック |
# 静的ビルド
pnpm build生成物は dist/ に出力され、Cloudflare Workers で配信可能な形になります。
本番環境はCloudflare Workersで運用しています。GitHub Actionsにより、mainブランチへのプッシュ時に自動でデプロイされます。また、Pull Requestの際にはデプロイプレビューが自動で作成されます。
├─ posts/ # 公開ブログ記事 (mdx)
├─ public/ # 直接配信する静的ファイル (画像、アイコンなど)
├─ src/
│ ├─ components/ # 再利用可能な Astro/React コンポーネント
│ ├─ layouts/ # レイアウトファイル
│ ├─ pages/ # ルーティング対象ページ
│ ├─ styles/ # グローバル CSS
│ └─ libs/ # ビジネスロジックやユーティリティ
├─ astro.config.js # Astro 設定
├─ wrangler.toml # Cloudflare Workers 設定
└─ package.json # スクリプト・依存関係
- すべてのコミットは
pnpm lintとpnpm typecheckが通る状態を保ちます。 - コードフォーマットは Prettier に従います。
pnpm formatで自動整形してください。 - ブログ記事は Markdown / MDX で
posts/配下に配置します。 - 画像や静的アセットは
public/へ配置し、パスは/からの絶対パスで参照します。