ブログ · 14 ページ目
開発とデザイン、あとは雑記。
@/ エイリアスは三箇所に設定する。どれが欠けても壊れる
深い相対 import を全廃した代償は、エイリアスを三箇所で設定することです。一つ欠けると、エディタのエラー・ビルド失敗・スタイルの静かな消失という別々の症状になります。
zod で frontmatter を契約にする:記事の書式エラーをビルド時に落とす
Content Collections の schema が唯一の真実です。タイトルが 120 字を超える、日付が壊れている、タグが配列でない——どれもビルド時に失敗し、ページが黙って消えることはありません。
なぜまた個人サイトを作ったのか
書く場所がなかったわけではなく、記事とゲームとツールを同じ場所に置けなかったから。
設定不要のレジストリ:ゲーム追加はディレクトリ追加と同じ
一覧・詳細ルート・トップの注目枠・sitemap はすべて import.meta.glob が自動検出します。代償は Vite の規則、リテラルの相対パスだけという一点です。
アプリページに client:only を使わない:静的シェルと明示的なマウント
ゲームとツールのページは「シェル + createApp」で、client:only ではありません。読み込み・成功・失敗の三状態を自分で持ち、再試行ボタンも本当に動きます。
ビューにロジックを置かない:データ組み立てはすべて src/server へ
ページにはルートの export とコンポーネントの読み込みしかありません。取得・パス組み立て・日付計算はすべて src/server に移しました。その利点と、強制される型の制約について。
