【问题标题】:React Native: Convert an Expo bare project to a pure react native appReact Native:将 Expo 裸项目转换为纯 React Native 应用程序
【发布时间】:2021-09-05 02:56:21
【问题描述】:

TL;DR

之前曾在 SO 上提出过类似问题(例如 Convert Expo project to Original React Native projectCommands to use after converting from expo to react-native-cliExpo to react native init),但没有一个解释如何完全删除 所有 Expo 模块和我的项目中的依赖项,因此我最终得到了一个纯 React Native 应用程序(就像我首先运行 react-native init... 一样)。

那么,是否有可能通过一个简单的命令删除所有这些我从未要求或期望安装的额外垃圾??大都会! :-)

背景

基本上,我是从一个托管的 Expo 项目中退出,然后自定义了很多 文件夹,然后才意识到我的构建/安装时间非常慢。

为了解决这个问题,我运行了yarn global add depcheckdepcheck,这表明我可以/应该删除以下所有包(最重要的包标有星号):

expo-updates*
filtrex
firebase-admin
lodash
mathjs
moment
native-base
nodemailer
react-native-android-location-enabler
react-native-credit-card-input
react-native-document-picker
react-native-fast-image
react-native-geolocation-service
react-native-image-crop-picker
react-native-js-bottom-sheet
react-native-reanimated
react-native-signature-capture
react-native-unimodules*
react-native-web
react-timer-mixin
recyclerlistview
shortid
stripe-client
styled-system
@babel/core
@react-native-community/eslint-config
babel-jest
jest
prettier
react-test-renderer

所以我盲目地在所有这些包上运行yarn remove ...,现在我在尝试构建时遇到了大量错误。我不会在这里列出它们,因为很明显它们主要(如果不是完全)与上面标记的 expo-updatesreact-native-unimodules 软件包相关。

我没有在我的代码中明确使用任何与 Expo 相关的内容,所以这应该是 IMO 的小菜一碟,但事实证明这非常困难!

那么我怎样才能正确地去除这些多余的东西呢?我需要从react-native init 重新开始吗? MTIA :-)

【问题讨论】:

    标签: javascript android react-native expo


    【解决方案1】:

    退出的世博会项目需要 unimodules 才能正常运行。所以我认为没有一个简单的命令可以满足您的所有要求。您可以按照一些步骤使其正常工作。

    1. 为安全着想。
    2. 弹出,检查它是否工作并提交。
    3. 删除项目中除.git文件夹外的所有文件夹(如果项目没有远程存储,也可以将.git的副本保留在其他地方)。
    4. 做一个裸react-native项目到同一个文件夹(必须从与当前项目文件夹名称相同项目名称的父文件夹开始,它会提示文件夹不为空。选择继续)。李>
    5. 放弃使用您的代码删除文件。
    6. 添加项目中使用的包(对于 expo 包,查找替换包。很可能会在 expo 文档中提及)。
    7. 运行项目,(可能会缺少一些依赖项。如果是,请添加并重新运行)

    【讨论】:

    • 谢谢,这基本上是我过去 3.25 小时一直在尝试做的事情。我已经完成了 99% 的工作;我找不到好的替代品的唯一 Expo 模块是 expo-font。你知道一个好的包可以once添加你的自定义字体以便在整个整个项目中全局使用吗? MTIA :-)
    【解决方案2】:

    终于将近 6 小时之后通过:

    1. 从头开始创建一个新的 React Native 应用程序 (react-native init MyAppName)。
    2. 寻找所有正在使用的 Expo 模块的替代品(不是由我直接使用,而是由其他软件包使用)。
    3. 重新配置我的 Firebase 项目以与应用程序配合使用(尤其是 SHA 密钥)。
    4. 卸载旧应用程序,安装新应用程序并清除“新”应用程序的缓存(我说“新”是因为我不认为这一步是必要的,但不知何故,出于某种愚蠢的原因,Android 试图使用旧的缓存应用文件)。

    最后一步绝对至关重要;我花了大约 2 个小时的时间在电脑上挠头和尖叫,然后我终于偶然发现了这个:React Native white blank screen issue。非常感谢@DiwakarPrasad 提供了绝对的知识瑰宝!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 2019-09-19
      • 2021-07-05
      • 1970-01-01
      • 2018-12-23
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多