333文字
2分
編集

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--seedemulate init / emulate list による CLI 操作。
  • npm install emulate 後の createEmulator と、Vitest / Jest の beforeAll でエミュレータ URL を環境変数へ渡すパターン、インスタンスの urlreset()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(ドキュメント)へ分割。

#参考文献