为什么我们不在 react-native 中忽略 ios/ 和 android/

Why don't we gitignore ios/ and android/ in react-native

在我们的 react-native 项目中,我们经常在截然不同的分支之间切换时使用以下脚本以避免复杂化。

"eject": "rm -rf ios/ && rm -rf android && react-native eject",
"fresh-start": "rm -rf ./node_modules && npm install && npm run eject"

但是,如果 react-native eject 命令更改了 ios/build/ 和 android 中的许多生成文件,我们为什么不 gitignore ios/ 和 android /?在许多 github 问题和存储库中,我看到人们最多 gitignore 他们的构建/

iosandroid 文件夹将包含 运行 您的 RN 应用程序所需的本机代码。如果这些文件夹被忽略,您将不得不重新生成整个项目并且 运行 每次都反应原生 link。

此外,您可能需要 运行 自定义本机代码,这些代码将存储在本机文件夹中。

有两种方法可以启动 React-Native 项目。 create-react-native-appreact-native init

在第一种情况下,您将避免使用 ios/android 文件夹结构并依赖 Expo 来为您的项目提供服务。这也使您能够 react-native eject 到类似于 react-native init

的结构

如果您不需要本机功能,则可以避免使用 react-native ejectYou can read more about it here

如果您需要集成本机模块(Obj-c、Swift 或 Java)的能力,那么您需要那些 iOS / Android 文件夹,并且您必须弹出。在 Xcode 或 Android Studio 的 iOS / Android 文件夹中有与构建应用程序相关的信息。例如,iOS/Podfile 中可能有需要跟踪的模块才能正确构建 iOS 应用程序。弹出不是你应该连续做的事情。

如果您不使用 Expo 来分发项目的 JS 端,那么您将需要其他服务来执行此操作。 Microsoft App Center has support for React Native