vercel-prod-ship
vercel --prod で生成される preview 用 deployment URL を、production ドメインに alias して 200 OK 疎通まで確認する 2 段デプロイ手順。
Procedure
pre-flight: ローカルビルド成功を確認
npm run build失敗したら deploy せず修正。
deploy: ログを残しつつ
vercel --prodを実行vercel --prod 2>&1 | tee /tmp/vercel-deploy.logdeployment URL 抽出: ログから
*.vercel.appを取り出すDEPLOY_URL=$(grep -oE 'https://[^ ]+\.vercel\.app' /tmp/vercel-deploy.log | head -1) echo "$DEPLOY_URL"alias 貼り: production ドメインに紐付け
vercel alias "$DEPLOY_URL" <production-domain>疎通確認: production ドメインに HEAD リクエスト
curl -sI https://<production-domain> | head -1HTTP/2 200を確認。失敗時のログ確認: 404/500 が出た場合
vercel logs https://<production-domain> --since=5m
Pitfalls
vercel --prodだけだと preview 用の*.vercel.appURL のままで、本番ドメインには反映されない。alias 必須。alias 先の domain は事前に
vercel domains add <domain>済みであること。未登録だと alias が失敗する。next.config.jsの env 変数が prod / preview で別値になっているケースあり。値ズレで 500 になることがある。アカウント / team 切り替え忘れ:
vercel whoami vercel switch <team>build 成果物が
.next以外(out/等 static export)の場合はvercel.jsonのoutputDirectoryを確認。既存
/deployやship-safeは汎用フロー。このスキルは vercel CLI 限定の 2 段(deploy → alias)パターン。
Verification
deployment URL:
https://<project>-<hash>.vercel.app形式が抽出できているproduction domain:
curl -sIでHTTP/2 200(または期待のステータス)alias 反映確認:
vercel ls --prod | head -3最新の deployment が production ドメインに紐付いていること。
念のためブラウザ実 URL でも確認(キャッシュ・edge 反映遅延の可能性)。
罠: サブディレクトリのサイトが ../data を読む構成(2026-07-05 asia-selectで発見)
site/ の中から resolve(process.cwd(), '../data', ...) 等でリポジトリルートのデータを読む構成は、
site/ ディレクトリから vercel deploy するとビルド失敗する(アップロードに ../data が含まれない)。
直し方: リポジトリルートに vercel.json を置き、ルートからデプロイする:
{
"installCommand": "cd site && npm install",
"buildCommand": "cd site && npm run build",
"outputDirectory": "site/dist",
"framework": null
}
site/.vercel が残っていると古いプロジェクトにリンクされるので rm -rf site/.vercel してからルートで deploy。
罠: vercel domains add はプロジェクトlink済みなら単一引数(CLI v53)
vercel domains add <domain> <project> の2引数形式は "missing_arguments" エラーになる。
リンク済みディレクトリで vercel domains add <domain> --scope <team> と単一引数で実行する。
bokuwalily.com 配下のサブドメインなら DNS は自動設定され、数十秒で200になる。