Ejected Expo应用与React Native CLI应用有何区别?Eject后是否需重写项目?
关于Expo eject后项目属性与依赖相关问题解答
1. 是否需要走第二种新建RN CLI项目迁移的方案?
不需要。你执行eject操作后得到的项目,本质就是标准的React Native CLI项目,完全符合你的需求,不需要再重新创建项目迁移代码。
Expo的eject操作核心就是把原本被Expo封装隐藏的Android、iOS原生工程目录释放出来,底层适配的就是React Native官方的CLI工具链,项目结构和纯RN CLI初始化的项目没有本质差异。
2. 为什么eject后的项目还保留expo相关依赖?
你在package.json里看到的expo开头的依赖,并不是Expo托管环境的专属依赖,只是Expo团队开源维护的通用React Native组件/工具库,哪怕是纯RN CLI初始化的项目也可以直接安装使用。
比如你列表里的expo-linear-gradient是跨平台渐变实现组件、expo-splash-screen是启动屏控制工具,这些库你在开发Expo项目的时候就在使用,eject操作只是把这些库的原生配置自动集成到你新释放的Android、iOS工程中,不会主动删除你原本在用的业务依赖,所以会保留下来。
3. 这些expo相关依赖是否可以安全移除?
是否能移除取决于你的业务代码是否还在使用对应的能力:
- 若你的代码中还有调用这些库的逻辑,比如引入了
expo-linear-gradient的渐变组件、调用了expo-splash-screen的隐藏启动屏方法,直接卸载会导致代码运行报错。你需要先把对应逻辑替换为其他社区同类型库的实现,再卸载对应的expo依赖。 - 若你已经把代码中所有对expo相关库的引用都清理完毕,就可以正常卸载这些依赖,不会影响项目本身的React Native CLI属性。卸载后建议执行
npx pod-install(iOS端)和Android项目的clean操作,清理残留的原生配置,避免后续打包报错。
内容的提问来源于stack exchange,提问作者Mir Stephen
相关产品推荐
相关产品推荐

