Expo EAS 托管部署
帮助 Expo 项目部署网站与 API 路由,并配置密钥、域名和边缘运行时。
证据显示技能明确提示 EAS Hosting 为付费服务,要求服务端保存密钥、禁止将密钥暴露到客户端,并建议输入校验和错误处理;但部署、生产发布、环境变量创建和自定义域名配置均未要求用户确认,也未说明数据流、权限范围、回滚方案或部署失败后的恢复路径。示例包含 CORS 通配符、未经完整验证的认证逻辑和将用户输入拼入第三方 URL 的代理模式,因此扣分。
文档覆盖导出、部署、API 路由、环境变量、运行时限制和本地 curl 测试,主路径基本连贯;但仅提供静态示例,没有提交测试套件或可复现结果,边界输入、部署失败、认证失败和回滚反馈不足,部分命令和平台行为未在文件内得到验证。按静态校准不超过10分。
受众和使用场景较清晰,明确区分网站/API 路由、EAS Hosting 与原生构建/商店发布,并列出不适合 API 路由的场景;但触发条件、输入输出契约和非适用边界仍较粗略,没有中文支持说明,也未讨论中国大陆网络访问 EAS、Cloudflare 或相关服务的可达性。
SKILL.md 结构清晰,按场景、示例、运行时限制和部署流程组织,包含版本 1.0.0、MIT 许可和仓库级安装/更新说明;但缺少该技能专属的变更记录、维护责任人、明确更新路径、FAQ 和系统化故障排查,且自定义域名部分几乎没有操作细节。
示例可覆盖常见 API 路由和 EAS Hosting 部署任务,包含可直接改写的 TypeScript、curl、CLI 和工作流片段;但生产可用性仍需补充认证、输入校验、密钥轮换、数据库连接、CORS 限制和错误分类,部分示例把响应转发给客户端而未处理上游失败。静态阅读无法证明端到端完成任务,按校准不超过7分。
文档给出 Expo 定价、工作流语法和仓库 README 中的官方文档入口,具备有限的来源可追溯性;但选定技能没有测试文件、CI 覆盖、版本兼容矩阵或第三方执行证据,结论主要来自作者提供的说明,静态校验不足。
- 部署和生产发布会产生外部服务费用与状态变更;执行 eas deploy、eas env:create 或自定义域名配置前应获得用户明确确认,并建立回滚或版本恢复方案。
- 不要直接采用 CORS 的 Access-Control-Allow-Origin: *;应按实际客户端来源限制,并结合认证策略。
- 示例中的认证仅检查 Authorization 头,未验证令牌;代理示例还需校验和编码 city 等用户输入,并检查上游 HTTP 状态。
- EAS Hosting 依赖 Expo/EAS 和 Cloudflare 托管服务,文件未证明其在中国大陆网络环境中的稳定可达性。
这个 Skill 能做什么,适合哪些场景?
该技能面向使用 Expo 和 Expo Router 的开发者,指导将 Web 应用和 API 路由部署到 EAS Hosting。它涵盖 Web 导出、预览与生产部署、环境密钥、自定义域名以及 Cloudflare Workers 运行时限制。技能还说明如何编写带有 +api.ts 后缀的 API 路由,包括 HTTP 方法、请求处理、CORS 和错误处理。EAS Hosting 属于付费服务,但导出 Web bundle、编写 API 路由以及自行托管导出的服务器输出是免费的开源能力。
指导在 app 目录中创建 +api.ts API 路由,读取查询参数、请求头和 JSON body,并返回 Response;说明如何使用 process.env 管理服务端密钥、添加 CORS 和错误处理;使用 npx expo export -p web 导出 Web bundle,并用 eas deploy 创建预览或生产部署;使用 eas env:create 配置生产环境变量,并通过 eas.json 或 Expo dashboard 配置自定义域名;解释 Cloudflare Workers 中不可用或受限的 Node.js API,并给出 fetch、Web Crypto 和云数据库的替代方式。
- 需要把 Expo 网站和 Expo Router API 路由一起部署到 EAS Hosting 的 Web 开发者。
- 需要在服务端保存 OpenAI、Stripe 等 API 密钥并代理第三方请求的开发者。
- 需要接收 Stripe 或 GitHub webhook、执行服务端验证或数据库操作的团队。
- 需要为 Pull Request 创建预览 URL,或在主分支推送时自动发布生产版本的团队。
- 需要配置 EAS Hosting 环境变量和自定义域名的项目维护者。
这个 Skill 有哪些优点和局限?
- 覆盖网站、Expo Router API 路由、密钥、域名和部署自动化的完整流程。
- 明确说明 Cloudflare Workers 的运行时限制及 Web API 替代方案。
- 提供可复制的 TypeScript、curl、EAS CLI 和工作流 YAML 示例。
- API 路由可与 Web bundle 一起部署,并支持预览和生产环境。
- EAS Hosting 是付费服务,生产部署受套餐请求量和带宽额度限制。
- Cloudflare Workers 不提供 Node.js 文件系统和原生 Node 模块,CPU 密集任务有 30 秒限制。
- 不适用于原生构建或应用商店发布,这些任务应使用 eas-app-stores 技能。
- 源材料未提供测试套件或平台实测结果。
如何安装这个 Skill?
该仓库是包含 23 个技能的集合。使用 Skills CLI 安装全部 Expo 技能:npx skills@latest add expo/skills --skill '*',然后重启或刷新代理会话。Claude Code 可运行 claude plugin install expo@claude-plugins-official;Codex 可运行 codex plugin add expo@openai-curated。源材料未提供仅安装 eas-hosting 的单技能命令。
如何使用这个 Skill?
在已安装技能的 Expo 项目中提出具体请求,例如:“将这个 Expo 网站部署到 EAS Hosting,并配置生产环境密钥和自定义域名”,或“为 Expo Router 创建一个接收 POST JSON 的 API 路由”。典型部署命令为:npx expo export -p web,npx eas-cli@latest deploy(预览),或 npx eas-cli@latest deploy --prod(生产)。
这个 Skill 与同类方案有什么区别?
与 EAS Hosting 相比,自行托管导出的服务器输出可以避免使用 EAS Hosting,但需要自行负责托管。对于实时更新,源材料建议使用 WebSockets 或 Supabase Realtime;对于简单 CRUD,则可考虑 Firebase、Supabase 或 Convex。