如何用 EAS 构建 Ignite 应用的开发、预览与生产构建包?
【免费下载链接】igniteInfinite Red's battle-tested React Native project boilerplate, along with a CLI, component/model generators, and more! 9 years of continuous development and counting.项目地址: https://gitcode.com/GitHub_Trending/ig/ignite
Ignite 应用生成后,要在本地模拟器、真机上运行,或者产出可提交应用商店的安装包,都需要先构建出对应的二进制。Ignite 把这件事交给 Expo Application Services(EAS):它既能用 EAS 云服务在云端构建,也可以在本地执行构建,并且模板仓库里已经配好了eas.json构建配置文件和一组package.json快捷命令,覆盖开发(development)、预览(preview)与生产(production)三类构建目标。本文按“准备环境 → 看懂构建配置 → 执行构建 → 验证产物”的顺序说明如何完成这些构建。
前提条件
按 QuickStart 的说明,使用 EAS 构建需要准备:
npm install -g eas-cli- 安装 EAS CLI;
- 一个 Expo 账号(文档说明可免费注册);
- 模板自带的 eas.json 中声明了
"cli": { "version": ">= 3.15.1" },即 EAS CLI 版本需要满足>= 3.15.1; - 注意平台限制:构建 iOS 应用必须在 macOS 上进行,Android 可以从任意操作系统构建。
另外一个背景:Ignite(版本 10 起)不再在搭建时提供 Expo Go 选项(见 Expo and Ignite),因此要在本地模拟器或手机上运行应用,boilerplate 的 README 明确要求先执行一次eas build产出构建包。
理解 eas.json 中的构建配置
每个新生成的 Ignite 项目根目录都带有一个 eas.json,它是 EAS 构建与分发的配置文件,内置了面向常见场景的构建 profile(说明来自 eas.json 文档):
| Profile | 用途 |
|---|---|
development | 内部调试构建,用于模拟器测试(distribution: internal、iOSbuildConfiguration: Debug、simulator: true、Android 走:app:assembleDebug) |
development:device | 内部调试构建,用于真机测试(在development基础上将 iOSsimulator设为false) |
preview | 内部生产构建,用于模拟器测试(Android 产出apk) |
preview:device | 内部生产构建,用于真机测试(iOSsimulator: false) |
production | 默认生产 profile,面向外部分发(App Store / Google Play) |
profile 之间通过extends继承配置,例如development继承production后只覆盖自己需要的项,development:device再继承development并修改simulator。这意味着你需要新增构建变体时,可以照这个模式扩展eas.json,而不是复制整段配置。eas.json中还包含一段"submit": { "production": {} },配合 production 构建的产物提交使用。
执行构建
模板在 package.json 中为每个 profile 和平台都提供了快捷脚本,底层都是eas build命令:
# iOS pnpm run build:ios:sim # eas build --profile development --platform ios --local pnpm run build:ios:device # eas build --profile development:device --platform ios --local pnpm run build:ios:preview # eas build --profile preview --platform ios --local pnpm run build:ios:prod # eas build --profile production --platform ios --local # Android pnpm run build:android:sim # eas build --profile development --platform android --local pnpm run build:android:device # eas build --profile development:device --platform android --local pnpm run build:android:preview # eas build --profile preview --platform android --local pnpm run build:android:prod # eas build --profile production --platform android --local几点使用说明:
- 这些快捷脚本都带了
--local,即在本机执行构建。QuickStart 同时说明,这些用于应用商店分发的二进制“可以在 EAS(Expo 提供的云服务)上构建,也可以在本地自行构建”,两条路径都受支持; - 选择哪个 profile 取决于目标:调试代码用
development(模拟器)或development:device(真机),验收接近线上的行为用preview/preview:device,提交商店用production; - production 构建的典型命令即
pnpm run build:android:prod或pnpm run build:ios:prod,执行后终端会给出后续指引,按提示操作即可。
验证构建结果
判断构建是否成功的依据来自 QuickStart 的说明:构建成功后,你会得到 AAB 或 IPA 格式的二进制文件(取决于构建的平台),这些文件就是可提交到对应应用商店(Google Play / App Store)的产物。
对于开发构建,验证方式则是把产出的构建包装到目标环境运行:README 指出构建包的用途就是让应用跑起来在本地模拟器或手机上调试。构建完成后,eas.json中的submit.production配置与 production 产物对应商店提交流程。
限制与注意事项
- iOS 构建只能在 macOS 上执行;
- 快捷脚本是
--local本地构建,如果改用 EAS 云端构建,按 QuickStart 的说法是同一套 EAS Build 流程的另一种执行位置; - 由于 Ignite 10 不再默认支持 Expo Go,模拟器/真机调试依赖先完成一次
eas build,不能指望 Expo Go 直接跑应用。
【免费下载链接】igniteInfinite Red's battle-tested React Native project boilerplate, along with a CLI, component/model generators, and more! 9 years of continuous development and counting.项目地址: https://gitcode.com/GitHub_Trending/ig/ignite
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考