# 策展 · X (Twitter) 🔥

> 作者：Chris Tate (@ctatedev) · 平台：X (Twitter) · 日期：2026-03-24

> 原始來源：https://x.com/ctatedev/status/2035756810179670376

## 中文摘要

「emulate」是一個服務模擬器，讓外部整合變得容易測試、穩定運行，並為 Agent、CI 或任何需要確定性的環境提供可預測的行為。它不是 mock，而是完整狀態保持的生產級保真度 API 模擬。

**零配置啟動與多服務支持**

- 執行 `npx emulate` 即可無需設定檔啟動所有服務
- 預設服務於 localhost 自動遞增埠號啟動：Vercel（4000）、GitHub（4001）、Google（4002）
- 支援 CLI 選項自訂服務選擇、埠號或透過 YAML/JSON 載入種子設定
- 提供程式設計 API 供 Node.js 應用直接使用，可在測試框架（Vitest、Jest）中作為 beforeAll/afterEach hooks 整合

**Vercel API 完整實現**

emulate 支援完整的 Vercel API，覆蓋使用者、團隊、專案、部署、網域、環境變數等端點，所有操作具有狀態持久性：

- 使用者與團隊管理：認證使用者檢索、團隊建立、成員管理
- 專案與部署：支援環境變數、Git 整合、版本 v6–v13 相容性、自動轉換部署至 READY 狀態
- 域名驗證與環境變數加密
- 遊標式分頁支援搜尋和篩選

**GitHub API 與 OAuth 完整支持**

涵蓋 REST API 的廣泛功能，包括：

- 使用者、組織、repo 完整 CRUD
- Issue、Pull Request、Comment、Review 狀態管理與轉換事件
- 分支保護規則、標籤、里程碑、Git 資料結構（commit、tree、blob、tag）
- 搜尋功能（支援完整查詢語法：user、org、language、topic、stars、forks 等）
- Actions 工作流程、檢查執行、成品、秘密管理
- Webhook 支援實時 HTTP 遞送至註冊 URL
- GitHub App 支援 JWT 驗證與安裝存取 token

OAuth 應用嚴格驗證 client_id，若未配置則向後相容接受任意 client_id；GitHub App 支援完整的私密金鑰驗簽與事件 webhook 遞送，包括 `installation` 欄位與可選的 `X-Hub-Signature-256` 標頭。

**Google OAuth 2.0 與 OpenID Connect**

實現完整的 OAuth 流程，無需實際連線 Google：

- 授權端點、token 交換、使用者資訊檢索
- OpenID Connect 探索文件與 JSON Web Key Set (JWKS)
- 支援可配置的 OAuth client 與重新導向 URI

**靈活的設定與驗證機制**

- YAML 配置支援使用者、token、OAuth 應用、GitHub App（含私密金鑰與權限定義）、webhook URL
- Token 驗證支援 `Authorization: Bearer` 或 `Authorization: token` 標頭格式
- Vercel 支援透過 `teamId` 或 `slug` 查詢參數進行團隊範疇限制；GitHub 公開 repo 無需驗證，私有 repo 與寫入操作需有效 token

**架構與擴展性**

核心基於 Hono HTTP 伺服器與內存 Store，提供通用 `Collection<T>` 實例支援 CRUD、索引、篩選與分頁。各服務外掛於共享應用註冊路由，所有狀態變更透過中央 Store 管理，確保跨服務的資料一致性與事件同步。程式庫結構清晰，CLI 由 commander 驅動，支援 Next.js 文件網站。

## 標籤

CLI, 開源專案, 其他, emulate
