EAS 中的环境变量

编辑页面

关于如何在构建、更新和工作流中使用 Expo Application Services (EAS) 环境变量的概述。


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

本指南说明了如何在 Expo Application Services(EAS)中使用环境变量:Build、Updates、Workflows 和 Hosting。有关环境变量在 Expo 框架中如何工作的通用信息,请参阅 Expo 中的环境变量

在本地开发期间,环境变量会从本地 .env.env.local 文件中加载。此类文件通常会被排除在项目的版本控制之外(也就是说,如果它们被列在 .gitignore 文件中,或者没有提交),因此对于在远程服务器上运行的任务不可用,例如 EAS Build 和 EAS Workflows。此外,大多数项目都有多个应用变体,并且需要多组环境变量(例如开发环境和生产环境)。

为什么使用 EAS 环境变量

如果你需要以下功能,可能会想使用 EAS 环境变量:

  • 将云构建、更新和工作流的配置集中在一个地方,而无需提交 .env 文件。
  • 按环境(developmentpreviewproduction)分离值,同时复用名称。
  • 控制可见性(明文、敏感、密钥),以便只有正确的范围可以读取每个值。
  • 通过 eas env:pull 或在 CI/CD 中本地应用相同的一组变量。

这些正是 EAS 环境变量要解决的问题。使用 EAS 环境变量时,变量可通过 EAS CLI 或直接在 expo.dev 控制台中配置,并且 EAS Build 和 EAS Workflows 以及你的本地机器都可以通过 EAS CLI 访问这些变量。

快速开始

1

要创建一个新的环境变量,请使用 EAS CLI,并在你的项目目录中运行以下命令。下面的命令会为 production 环境创建一个名为 EXPO_PUBLIC_API_URL、值为 https://api.example.com 的新环境变量。

Terminal
eas env:create --name EXPO_PUBLIC_API_URL --value https://api.example.com --environment production --visibility plaintext

2

通过确认它在项目设置中的 Environment variables 中显示 production 徽标,来验证环境变量是否已成功创建。环境变量也可以直接在 expo.dev 上管理。

3

要在 EAS Build 中使用该环境变量,请在 production 构建配置中添加 environment 字段:

eas.json
{ "build": { "production": { "environment": "production" } } }

现在,为 production 构建配置创建的任何环境变量都将在构建过程中可用。

4

要在 EAS Update 中使用该环境变量,请运行带有指定 --environment 标志的 eas update 命令:

Terminal
eas update --environment production

--environment 标志用于指定更新任务所使用的环境。更新过程中只会使用所指定环境中的环境变量。

5

要在 EAS Hosting 中使用该环境变量,请运行带有指定 --environment 标志的 eas deploy 命令。如果你同时需要客户端和服务端环境变量,请按以下顺序运行下面的命令(客户端变量必须是明文或敏感,不能是密钥),并查看 客户端环境变量 了解更多信息。

Terminal
eas env:pull --environment production
npx expo export --platform web
eas deploy --environment production

--environment 标志用于指定部署任务所使用的环境。部署过程中只会使用所指定环境中的环境变量。

关键概念

可用环境

默认情况下,EAS 为环境变量支持三个环境:developmentpreviewproduction。自定义环境名称适用于 Enterprise 和 Production 套餐。

每个环境都是一组独立的变量,可用于在不同场景下自定义你的应用。例如,你可以为开发和生产使用不同的 API 密钥,或者为应用商店发布使用不同的 bundle 标识符。

每个 EAS Build 和 Workflows 任务都会使用某个可用环境中的环境变量运行。你也可以将环境用于更新,从而允许你为构建任务使用同一组环境变量。在发布更新时,请使用所需的 --environment 标志指定环境。

环境变量可以分配到多个环境中,并在所有环境中保持相同的值,也可以只为单个环境创建。

作用域

  • 项目范围:仅属于单个 EAS 项目。你可以在项目控制台中导航到 Environment variables 页面来创建、查看和管理它们。这些环境变量可用于在 EAS 服务器上运行的任何任务,以及此项目的更新。如果其可见性设置允许,也可以将它们拉取到本地用于开发。
  • 账户范围:在你的 EAS 账户中的所有项目中都可用。你可以在账户控制台中导航到 Environment variables 页面来创建、查看和管理它们。这些环境变量可与某个项目的项目范围变量一起,供在 EAS 服务器上运行的任务和更新使用。如果其 可见性设置 允许,也可以将它们拉取到本地或在 EAS 服务器之外读取。

变量类型

  • 字符串:标准键值对,可用于构建、更新、工作流和托管。
  • 文件:作为文件上传的值(例如 google-services.json 或证书),会在构建运行器上作为文件路径提供给任务使用。

环境变量的可见性设置

每个环境变量都有三种不同的可见性设置可用:

可见性描述
明文在网站、EAS CLI 和日志中可见。
敏感在 EAS Build 和 Workflows 的任务日志中会被混淆。你可以通过切换开关让它们在网站上可见。它们也可以在 EAS CLI 中读取。
密钥不能在 EAS 服务器之外读取,包括网站和 EAS CLI 中。它们在 EAS Build 和 Workflows 的任务日志中会被混淆。
请注意,任何包含在客户端代码中的内容都应被视为公开内容,并且任何能够运行你应用的人都可以读取
密钥类型的环境变量 旨在为 EAS Build 或 Workflows 任务提供值,以便它们可用于改变任务的运行方式。例如,设置 NPM_TOKEN 用于从 npm 安装私有包,或者设置 Sentry API 密钥用于创建发布并上传源映射。对于最终嵌入到应用本身中的值,密钥并不会提供任何额外的安全性。

接下来去哪里

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

了解如何使用 EAS 控制台和 EAS CLI 创建、划分作用域并使用环境变量。

在 EAS 中使用环境变量

了解如何在 EAS 构建、更新、托管和工作流任务中使用环境变量。

不使用 EAS 时使用环境变量

了解在 Expo 和 React Native 项目中管理环境变量的非 EAS 方式。

常见问题

有关 EAS 中环境变量的常见问题。