Vercel で Docs を安定公開する
Next.js と Docusaurus を同じ Vercel プロジェクトに置くと、ルーティング衝突で 404 になることがあります。Docs を別プロジェクトに分け、必要ならアプリ側で /docs/* を rewrite する構成にすると安定します。
前提とゴール
- 公開 URL は
https://<docs-domain>/を基本に、必要ならhttps://<app-domain>/docs/...を維持する。 - Docs プロジェクトは Docusaurus をビルドして配信する。
- 404 やリンク切れはビルド・CI で検知して落とす。
Docs プロジェクト(Vercel)
- このリポジトリを Vercel の別プロジェクト(例:
river-reviewer-docs)として追加する。 - Build Command:
npm run build、Output Directory:buildを設定する。 - 環境変数を追加する。
DOCS_SITE_URL=https://<docs-domain>(例:https://river-reviewer-docs.vercel.app)DOCS_BASE_URL=/(省略可。デフォルトは/)DOCS_ROUTE_BASE_PATH=/(省略可。デフォルトは/)
/docs/からトップへ寄せる場合は、リポジトリ直下のvercel.jsonを利用する。
{
"trailingSlash": true,
"redirects": [{ "source": "/docs/", "destination": "/", "permanent": true }]
}
/docs/ 配信にしたい場合は DOCS_BASE_URL=/docs/ を指定し、リダイレクトも / -> /docs/ に合わせて変更します。
GitHub Pages 向けに DOCS_BASE_URL を指定しない場合は、従来どおり /river-reviewer/ 配信でビルドされます。
アプリ側(例: <app-domain>/river-reviewer.vercel.app など)
アプリの vercel.json に rewrite を追加し、ドキュメントドメインへ転送します(Docs 側が / で公開される前提)。
{
"rewrites": [
{ "source": "/docs", "destination": "https://<docs-domain>/" },
{ "source": "/docs/:path*", "destination": "https://<docs-domain>/:path*" }
]
}
品質ゲート
onBrokenLinksとonBrokenMarkdownLinksはthrow設定。壊れた内部リンクや Markdown 内リンクをビルドで検知する。npm run build(必要に応じてDOCS_BASE_URL=/docs/ DOCS_ROUTE_BASE_PATH=/を指定)で配信パスをローカル確認できる。- リンクチェッカーのワークフローで外部リンク切れも検出し、失敗時は PR をブロックする。