如何用 Bun 创建 Expo 项目并运行本地开发与脚本命令
【免费下载链接】expoAn open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.项目地址: https://gitcode.com/GitHub_Trending/ex/expo
如果你的目标是使用 Bun 作为 JavaScript 运行时和包管理工具,从零创建一个 Expo 项目,并在本机跑通开发服务器、原生 debug 构建以及 package.json 脚本,本文给出完整操作路径。Expo 是基于 React 的跨平台移动应用框架,支持 Android、iOS 和 Web。按本文操作后,你能得到:一个用 Bun 创建的项目、一个可以在模拟器/真机上预览的开发服务器,以及一套可用的本地编译命令。
适用前提(来自项目文档):
- 支持 macOS、Windows(PowerShell 和 WSL 2)、Linux;
- 机器上已安装 Bun;
- 仍然需要安装 Node.js (LTS):
bun create expo和bun expo prebuild这两个命令内部使用npm pack下载项目模板,因此不能缺少 Node.js。
Bun 相对 npm/pnpm/Yarn 的收益是更快的包安装速度,以及比 Node.js 更快的脚本启动速度,这会直接提升本地开发体验。
创建新项目
在项目目录之外、任意空目录中运行:
bun create expo官方 get-started 文档中推荐的默认命令即bun create expo,它会基于 create-expo-app 创建默认模板项目(含示例代码)。Using Bun 指南中给出的等价形式为bun create expo-app my-app,其中my-app为项目名。
两个可选分支,仅在需要时使用:
- 使用其他模板:添加
--template选项(见 create-expo-app 选项说明); - 从一个示例项目开始:
bun create expo --example交互式浏览示例列表,或直接指定名称,例如:
bun create expo --example with-widgets创建完成后进入项目目录:
cd my-app用 Bun 运行 package.json 脚本
创建项目后,package.json中定义的任何脚本都可以用bun run执行。Using Bun 指南给出的例子:
bun run ios安装 Expo 库时则使用bun expo install:
bun expo install expo-audio启动开发服务器并在设备上预览
在项目根目录启动开发服务器:
bun expo start启动后终端会显示一个 QR 码,用手机上的 Expo Go 扫描即可在真机上打开应用;如果使用的是 Android Emulator 或 iOS Simulator,直接在终端按A或I启动应用。
判断这一步是否成功:终端出现 QR 码,且应用能在模拟器或真机上打开并显示默认模板页面。
如果设备连接不上:
- 先确认电脑和设备处于同一个 Wi-Fi 网络;
- 仍不生效时(常见于公共网络的 NAT 限制),改用 Tunnel 连接方式后重新扫描 QR 码:
bun expo start --tunnel注意 Tunnel 方式下应用重载速度明显慢于 LAN 或 Local,能不用就不用。
本地编译原生 debug 构建
开发服务器(Metro)只负责 JS/TS 代码。要编译并安装原生应用,使用 Expo CLI 的 run 命令:
# 编译并运行 Android 项目 bun expo run:android # 编译并运行 iOS 项目 bun expo run:ios每条命令执行两件事:用本机安装的 Android SDK 或 Xcode 把项目编译成 debug 构建并安装到设备/模拟器,然后启动 Metro 服务 JS/TS 代码。要点:
- 如果
android、ios目录尚不存在,命令会先执行npx expo prebuild生成这些原生目录;已存在则跳过。这也是为什么bun expo prebuild依赖 Node.js (LTS); - 可用
--device参数在已连接的物理设备和模拟器/模拟器之间选择运行目标; - 首次构建后,如果只是修改 JS/TS 代码,不必再重新编译原生代码,直接运行
bun expo start启动 Metro,然后按A或I拉起已安装的应用,加载速度从分钟级降到秒级; - 修改了项目配置或原生代码(例如添加原生库、改 config plugin)后,需要重新运行
bun expo run:android/run:ios。想干净地重新生成原生目录时使用npx expo prebuild --clean。
命令选择速查(来自 Local app development 指南):
| 命令 | 作用 | 使用时机 |
|---|---|---|
bun expo run:android/run:ios | 编译原生代码、安装应用、启动 Metro | 首次构建、添加原生库后、修改 config plugin 后 |
bun expo start | 只启动 Metro 打包器 | 日常开发,只改 JS/TS 代码时 |
安装expo-dev-client后,debug 构建会包含 Expo 开发者工具,这类构建称为 development build:
bun expo install expo-dev-client随后用上面的bun expo run:android/run:ios命令构建即可。
验证改动是否生效
打开项目中的src/app/index.tsx,把默认标题文案改一下,例如:
- Welcome to Expo + Hello World!文档默认配置下 Expo Go 在文件变化时会自动重载应用。如果改动没有出现在设备上,按文档给出的顺序排查:
- 确认 Expo CLI 的开发模式已启用;
- 关闭并重新打开 Expo 应用;
- 打开应用后摇动设备(或按Cmd ⌘+D)呼出开发者菜单;
- 开发者菜单中若显示Fast Refresh(即该项当前被禁用),切换它;若显示Disable Fast Refresh,说明已启用,直接收起菜单后再改一次代码试试。
限制与边界
bun create expo和bun expo prebuild依赖 Node.js (LTS),不能只装 Bun 就完成整个流程;- Bun 不会自动执行第三方库的生命周期脚本(如
postinstall),这是出于安全考虑。如果某个依赖的postinstall必须运行,需要在package.json中显式声明:
"trustedDependencies": ["your-dependency"]然后删除锁文件重装:
rm -rf node_modules && rm bun.lock bun.lockb && bun install注意这条命令会删除项目的 node_modules 和 Bun 锁文件后重新安装,仅在确实需要执行某个依赖的安装脚本时执行。
- 后续如果要把项目交给 EAS Build:EAS 依据代码库中的锁文件决定包管理器,在项目里运行
bun install生成bun.lock(Bun 1.2 及以上)或bun.lockb(旧版 Bun)后,构建即使用 Bun;同时需要删除其他包管理器生成的锁文件。更多细节见 Using Bun 指南 的 EAS 章节。
完成以上步骤后,你就拥有了一个用 Bun 管理依赖、能用bun run执行脚本、能用bun expo start做日常 JS/TS 迭代、能在需要时用bun expo run:android|ios生成原生 debug 构建的完整本地开发环境。
【免费下载链接】expoAn open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.项目地址: https://gitcode.com/GitHub_Trending/ex/expo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考