如何用 Bun 创建 Expo 项目并运行本地开发与脚本命令
2026/9/10 21:13:06 网站建设 项目流程

如何用 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 expobun 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,直接在终端按AI启动应用。

判断这一步是否成功:终端出现 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 代码。要点:

  • 如果androidios目录尚不存在,命令会先执行npx expo prebuild生成这些原生目录;已存在则跳过。这也是为什么bun expo prebuild依赖 Node.js (LTS);
  • 可用--device参数在已连接的物理设备和模拟器/模拟器之间选择运行目标;
  • 首次构建后,如果只是修改 JS/TS 代码,不必再重新编译原生代码,直接运行bun expo start启动 Metro,然后按AI拉起已安装的应用,加载速度从分钟级降到秒级;
  • 修改了项目配置或原生代码(例如添加原生库、改 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 在文件变化时会自动重载应用。如果改动没有出现在设备上,按文档给出的顺序排查:

  1. 确认 Expo CLI 的开发模式已启用;
  2. 关闭并重新打开 Expo 应用;
  3. 打开应用后摇动设备(或按Cmd ⌘+D)呼出开发者菜单;
  4. 开发者菜单中若显示Fast Refresh(即该项当前被禁用),切换它;若显示Disable Fast Refresh,说明已启用,直接收起菜单后再改一次代码试试。

限制与边界

  • bun create expobun 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询