This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

在 EAS 中创建和管理环境变量

编辑页面

了解如何使用 EAS 仪表板和 EAS CLI 创建、作用域化和使用环境变量。


以下章节介绍如何使用 EAS 仪表盘和 EAS CLI 创建、作用域以及消费环境变量。

创建环境变量

  • 选择一个环境或多个环境:默认可用 developmentpreviewproduction。一个变量可以在这些环境之间复用,也可以按环境定制。
  • 选择作用域:项目级变量适用于单个项目。账户级变量可以在多个项目之间复用,并且会在构建时与项目变量合并。
  • 选择可见性:对绝不应离开 EAS 服务器的值使用 secret,对可能在本地被显示的值使用 sensitive,对非敏感值使用 plain text

在仪表盘中创建变量

要在 EAS 服务器上创建新的环境变量,你可以在项目仪表盘中导航到 项目设置 > 环境变量,然后点击 添加变量 按钮。

使用环境变量创建表单页面来设置名称、值、环境、可见性以及可选描述。

创建的变量会在列表中显示其作用域、可见性和环境标签。根据此示例中的环境变量,列表可能如下所示:

在上面的示例列表中:

  • SENTRY_AUTH_TOKEN 变量是一个敏感环境变量。它用于在构建和更新后对 Sentry 进行身份验证以上传源映射,并且必须可在 EAS 服务器之外访问。
  • GOOGLE_SERVICES_JSON 变量是一个 secret 环境变量,并使用了上传的文件。它用于对 Google 进行身份验证以访问 Google Services JSON 文件,并且必须安全地存储在 EAS 服务器上。这个上传的 JSON 文件通常会添加到项目的 .gitignore 中。
  • 其他所有变量,例如 APP_VARIANTEXPO_PUBLIC_API_URL,都是纯文本环境变量。

使用 EAS CLI 创建变量

使用 eas env:set 添加变量,并使用 eas env:list 验证已设置的变量。

Terminal
# 示例:为 preview 环境创建新的纯文本环境变量
eas env:set --name EXPO_PUBLIC_API_URL --value https://example.app/staging --environment preview --visibility plaintext

# 示例:列出 preview 环境的所有环境变量
eas env:list --environment preview

在代码中使用环境变量

客户端值

带有 EXPO_PUBLIC_ 前缀的环境变量,会在你应用的代码中作为 process.env 变量可用。你可以动态使用它们,根据其值来配置应用行为:

import { Button } from 'react-native'; function Post() { const apiUrl = process.env.EXPO_PUBLIC_API_URL; async function onPress() { await fetch(apiUrl, { %%placeholder-start%%... %%placeholder-end%% }); } return <Button onPress={onPress} title="发布" />; }

在上面的示例中,EXPO_PUBLIC_API_URL 被用于动态设置 fetch 请求的 API URL。

构建时和应用配置

其他不带 EXPO_PUBLIC_ 前缀的变量可以在 应用配置 解析期间使用,以配置应用行为。例如,APP_VARIANT 变量用于确定所选 应用变体 的应用名称、包名和 bundle 标识符:

在动态应用配置中使用非前缀变量。如果你需要在本地解析配置,可见性至少保持为 sensitive(plain text 和 sensitive 可通过 EAS CLI 读取;secrets 会保留在服务器上)。

app.config.js
const IS_DEV = process.env.APP_VARIANT === 'development'; const IS_PREVIEW = process.env.APP_VARIANT === 'preview'; const getUniqueIdentifier = () => { if (IS_DEV) { return 'com.yourname.stickersmash.dev'; } if (IS_PREVIEW) { return 'com.yourname.stickersmash.preview'; } return 'com.yourname.stickersmash'; }; const getAppName = () => { if (IS_DEV) { return 'StickerSmash(开发)'; } if (IS_PREVIEW) { return 'StickerSmash(预览)'; } return 'StickerSmash:Emoji 贴纸'; }; export default { name: getAppName(), %%placeholder-start%%... %%placeholder-end%% ios: { bundleIdentifier: getUniqueIdentifier(), %%placeholder-start%%... %%placeholder-end%% }, android: { package: getUniqueIdentifier(), %%placeholder-start%%... %%placeholder-end%% }, };

密钥和文件变量

GOOGLE_SERVICES_JSON 这样的环境变量是一个 secret 文件变量,无法在 EAS 服务器之外读取,用于向 EAS Build 任务提供被 git 忽略的 google-services.json 文件。要在应用配置中使用它,你可以使用 process.env 变量,并在变量未设置时提供一个回退值(用于本地开发时,通常它位于项目仓库中):

app.config.js
export default { android: { googleServicesFile: process.env.GOOGLE_SERVICES_JSON ?? '/local/path/to/google-services.json', }, };

管理环境变量

你可以使用项目或账户中的 EAS 仪表盘 来创建、更新和删除环境变量。

你也可以使用 EAS CLI 来管理它们。以下命令以 production 环境为例。使用这些命令时,请将 production 替换为你要管理的环境。

Terminal
# 创建或更新环境变量
eas env:set --name EXPO_PUBLIC_API_URL --value https://example.app/staging --environment production --visibility plaintext

# 删除一个已有的环境变量
eas env:delete

# 列出所有环境变量
eas env:list --environment production

# 将环境变量拉取到 .env 文件中
eas env:pull --environment production

为本地开发拉取变量

在本地开发中使用 EAS 环境变量的高效方式,是使用 eas env:pull --environment environment-name 命令将它们拉取到 .env 文件中:

例如,要将 production 环境的环境变量拉取到 .env 文件中,你可以运行:

Terminal
eas env:pull --environment production

创建的文件可能如下所示:

.env.local
# 环境:production APP_VARIANT=development EXPO_PUBLIC_API_URL=https://staging.my-api-url.mycompany.com # GOOGLE_SERVICES_JSON=*****(机密变量不可读取) SENTRY_AUTH_TOKEN=token

你也可以在 EAS 仪表盘中使用 导出 选项下载文件,并将其存储到你的项目中。

自定义环境

这三个默认环境对于大多数用例已经足够,但如果你的项目依赖复杂工作流,并且需要创建更多环境的灵活性,那么使用自定义环境可能会很有用。

在 EAS 仪表盘中创建自定义环境

要在 EAS 仪表盘中创建自定义环境:

  • 在你的项目中,导航到 项目设置 > 环境变量,然后点击 添加变量 按钮。
  • 环境 下,点击 加号 (+) 图标 以输入自定义环境的名称。
  • 创建环境后,它会在 自定义环境 部分下预先选中。
  • 只要至少有一个环境变量关联到这个环境,它就会作为该账户或项目下所有环境变量的可选项显示出来。

使用 EAS CLI 创建自定义环境

要将环境变量分配给自定义环境,请在环境位置使用你的自定义环境名称。例如,下面的命令会创建一个新的变量 EXPO_PUBLIC_API_URL,并将其分配到自定义的 staging 环境:

Terminal
eas env:set --name EXPO_PUBLIC_API_URL --value https://example.app/staging --environment staging --visibility plaintext