mcpField
E
expo-examples

expo-examples

github.com/expo开发3.5k27.1k 次安装今天更新
代码仓库

关于 expo-examples

Expo 官方示例库的使用指南型 Agent 技能,帮助开发者查找并借鉴围绕单个库或服务构建的集成示例。它区分现有项目的参考适配与新项目脚手架创建,并强调保留原有配置。

主要功能

  1. 01按集成需求查找示例
  2. 02查看示例依赖与配置
  3. 03将示例模式适配到现有项目
  4. 04从示例创建新项目
  5. 05核对示例别名与弃用状态

适用场景

  1. 01为现有应用添加服务集成
  2. 02参考 Expo 维护的集成做法
  3. 03从集成示例启动新项目

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/expo/skills --skill expo-examples

安装后在 Claude Code 中输入/expo-examples确认已加载。

附带文件agents/openai.yamlreferences/catalog.md

详细介绍

Expo 示例

expo/examples 是 Expo 官方的约 70 个集成示例库——目录名称为 with-<library>(例如 with-stripe、with-maps),每个示例都围绕一个库或服务构建。这些并非完整应用,而是托管式项目(没有 ios//android/ 目录——原生设置通过配置插件完成),通常只有一个约 100–200 行代码的屏幕。可从中借鉴规范的集成模式——依赖项、app.json 配置插件,以及 Expo 针对当前 SDK 维护的最简接线方式——并将其应用到用户的应用中。不要指望从中直接套用应用架构。

手动编写集成前,先查找示例。(示例类型——全栈、展示和起步项目——见 ./references/catalog.md。)

两种模式

  1. 借鉴 / 改编(最常见)——用户已有项目。找到匹配的示例,阅读关键文件,并将其模式应用到用户的代码中。
  2. 搭建脚手架——从零开始。直接基于示例创建新项目。

工作流

1. 找到合适的示例

将用户的需求对应到示例名称(例如,支付 → with-stripe,身份验证 → with-clerk)。./references/catalog.md 是按类别整理的快照,便于快速筛选,但内容可能过时,因此要根据实时列表进行确认:

# Live example names:
gh api repos/expo/examples/contents --jq '.[] | select(.type=="dir" and (.name|startswith(".")|not)) | .name'
# Aliases (renamed) + deprecated (dead/moved) examples — check before recommending:
gh api repos/expo/examples/contents/meta.json --jq '.content' | base64 -d

meta.json 是示例重命名或失效情况的事实来源(已弃用的示例会从仓库树中移除,但仍会列在这里,每个示例都带有一条 message)。如果示例位于其 deprecated 映射中,不要推荐它;按照 message 指向的现代方案操作。如果它位于 aliases 中,则使用 destination。

2a. 借鉴模式——研究示例,不动用户项目

最常见的情况:用户已有应用,想了解 Expo 如何实现某项功能。将示例作为参考阅读,手动应用其中的模式——绝不要在用户项目中直接搭建示例。

**首先,一次性列出整个示例。**集成代码通常嵌套较深(例如,Stripe 的服务端路由位于 app/api/),只列出一层会漏掉重要文件:

gh api 'repos/expo/examples/git/trees/master?recursive=1' \
  --jq '.tree[].path | select(startswith("with-stripe/"))'

然后优先阅读高价值文件:README.md(设置)→ package.json(依赖项)→ app.json(配置插件 / 权限)→ 清单中显示的集成代码 → .env(必需的密钥)。每个文件:

gh api repos/expo/examples/contents/with-stripe/utils/stripe-server.ts --jq '.content' | base64 -d
# No gh? Raw URL (branch is master):
curl -s https://raw.githubusercontent.com/expo/examples/master/with-stripe/utils/stripe-server.ts

**要阅读的文件不止两三个?许多集成分布在服务端路由、客户端 Provider 和配置中(Stripe 就是如此)。跳过逐个读取文件的操作——将整个示例拉取到一个临时 / 被 git 忽略的目录(不是用户项目)**中,然后使用 Grep/Read 随意阅读,再手动应用:

npx degit expo/examples/with-stripe /tmp/expo-ref/with-stripe   # clean copy, no git history
# fallback without degit (sparse-checkout, no full ~64 MB clone):
git clone --depth 1 --filter=blob:none --sparse https://github.com/expo/examples.git /tmp/expo-ref/examples \
  && (cd /tmp/expo-ref/examples && git sparse-checkout set with-stripe)

使用 Grep/Read 阅读该目录中的内容;完成后删除临时目录。

2b. 搭建脚手架模式——基于示例创建新项目
npx create-expo --example with-stripe   # short form:  npx create-expo -e with-stripe
bun create expo --example with-stripe    # with bun
3. 将其改编到用户的应用中——以非破坏性方式操作(至关重要)

用户已有应用时,只添加示例引入的内容;绝不要覆盖用户现有的设置。

  • 对齐版本——不要复制固定版本。示例会追踪最新 SDK,因此其 package.json 中固定的版本可能与较旧项目不匹配。只通过 npx expo install <pkg> 添加缺少的依赖项(该命令会解析与 SDK 兼容的版本),而不要照搬确切版本。
  • **合并配置,不要替换。**只添加示例引入且用户尚未配置的 app.json/app.config.* 插件和权限——保留现有配置块不变。
  • 移植集成代码。
  • 根据示例的 .env 格式重新创建环境变量——其中包含占位符,不包含可用的密钥。

**完成标准:**已移植集成代码,并且用户的应用中已落实其所需的每项依赖项、配置插件、权限和环境变量——而不只是看起来已完成接线。

注意事项

  • 默认分支是 master, 不是 main(这对原始 URL 和稀疏检出很重要)。
  • 一键部署。 每个示例都有一个启动 URL:https://launch.expo.dev/?github=https://github.com/expo/examples/tree/master/<example>。

相关技能

  • 原生 UI 组件(@expo/ui package)→ expo-ui
  • 样式设计和原生风格的屏幕 → expo-native-ui
  • 导航和路由 → expo-router
  • 编写原生模块 → expo-module
  • 在采用最新 SDK 示例前升级 SDK → expo-upgrade

参考资料

  • ./references/catalog.md — 示例库的分类快照,便于快速筛选。

提交反馈

如果你发现此技能中有错误、误导性或过时的信息,请报告,以便 Expo 改进:

npx --yes @expo/agent-cli@latest feedback --category skills --subject "expo-examples" "<actionable feedback>"

只有在有具体且可执行的反馈时才提交。请尽可能提供相关背景信息。 如果 Agent 在 Expo 任务中反复失败,或用户不得不介入,请使用 --category evals 和相关 Expo package 或命令作为 --subject,简要报告任务、预期结果以及出现的问题。

评论

支持 Markdown