Vercel Labs emulate、CI・オフラインサンドボックス向けの本番相当ローカルAPIエミュレーション
モックではなく、CI やネットワーク遮断サンドボックスでも状態を持ったまま本番に近い API 振る舞いを再現するためのローカル置き換えとして、Vercel Labs の emulate が位置づけられる。Vercel・GitHub・Google(OAuth と Gmail / Calendar / Drive)・Slack・Apple(Sign in with Apple)・Microsoft(Entra ID と Graph の /v1.0/me)・AWS(S3・SQS・IAM・STS)向けの HTTP エンドポイントを、npx emulate または createEmulator から複数サービスを並行起動する構成で差し替える。
主な機能・特徴
npx emulateで既定ポートにまとめて起動、--serviceで対象を絞り、--port・環境変数EMULATE_PORT/PORT、--seedやemulate init/emulate listによる CLI 操作。npm install emulate後のcreateEmulatorと、Vitest / Jest のbeforeAllでエミュレータ URL を環境変数へ渡すパターン、インスタンスのurl・reset()・close()。emulate.config.*または--seedで YAML/JSON のシードを注入。GitHub の OAuth アプリをシードに定義するとクライアント検証が厳格化し、未定義時は任意のclient_idを受け入れる後方互換動作。GitHub App はシードで JWT 検証・インストール・アクセストークンや Webhook 送付まで再現する。- Next.js では
@emulators/adapter-nextの catch-all で同一オリジン運用し、Auth.js / NextAuth の authorization・token・userinfo をエミュレータパスへ向ける設定例。 withEmulateでバンドルフォントをサーバレストレースへ取り込み。既定のインメモリ状態はコールドスタートで失われるため、KV やfilePersistenceなどのpersistenceアダプタで永続化。
ライセンスは Apache License 2.0。モノレポは packages/emulate(CLI)・各 @emulators/* サービス・apps/web(ドキュメント)へ分割。