为啥我们不在 react-native 中 gitignore ios/ 和 android/
Posted
技术标签:
【中文标题】为啥我们不在 react-native 中 gitignore ios/ 和 android/【英文标题】:Why don't we gitignore ios/ and android/ in react-native为什么我们不在 react-native 中 gitignore ios/ 和 android/ 【发布时间】:2018-01-25 17:09:57 【问题描述】:在我们的 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 他们的构建/
【问题讨论】:
【参考方案1】:ios
和 android
文件夹将包含运行 RN 应用程序所需的本机代码。如果这些文件夹被忽略,您将不得不重新生成整个项目并每次运行 react native 链接。
此外,您可能需要运行自定义本机代码,这些代码将存储在本机文件夹中。
【讨论】:
弹出时保存本机代码的正确方法是什么? 本机代码将提交给 git,因此您不能忽略整个本机文件夹。例如,如果你有一个自定义的 Android RN 模块,你可以把它放在 root/android/app/src/main/java/com/company/app/MyCustomModule.javaios/build
文件夹呢?我们是 .gitignore
它还是提交它?【参考方案2】:
有两种方法可以启动 React-Native 项目。
create-react-native-app
和
react-native init
在第一种情况下,您将避免使用 ios/android 文件夹结构并依赖 Expo 来为您的项目提供服务。这也使您能够将react-native eject
转换为类似于react-native init
的结构
如果您不需要本机功能,则可以避免使用react-native eject
。
You can read more about it here
如果您需要集成本机模块(Obj-c、Swift 或 Java)的能力,那么您需要那些 iOS / Android 文件夹并且您必须弹出。在 iOS / Android 文件夹中有与在 Xcode 或 Android Studio 中构建应用程序相关的信息。例如,iOS/Podfile 中可能有需要跟踪的模块才能正确构建 iOS 应用程序。弹射不是您必须不断进行的事情。
如果您不使用 Expo 来分发项目的 JS 端,那么您将需要另一个服务来执行此操作。 Microsoft App Center has support for React Native
【讨论】:
以上是关于为啥我们不在 react-native 中 gitignore ios/ 和 android/的主要内容,如果未能解决你的问题,请参考以下文章
为啥我们使用 hadoop mapreduce 进行数据处理?为啥不在本地机器上做呢?