react-native link
是什么?
https://github.com/react-native-community/react-native-svg 的文档建议使用。
react-native link react-native-svg
这是与之相同吗?
pod 'RNSVG', :path => '../node_modules/react-native-svg'
# pod install
react-native link
是什么?
https://github.com/react-native-community/react-native-svg 的文档建议使用。
react-native link react-native-svg
这是与之相同吗?
pod 'RNSVG', :path => '../node_modules/react-native-svg'
# pod install
Cocoapods是iOS的依赖管理器。就像npm是JavaScript(更具体地说是Node.js)项目的依赖管理器。
让我们使用react-native-device-info
来举例。
该项目要求您在Podfile
中创建或添加以下内容(如果手动链接)。
pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
RNDeviceInfo
添加为iOS的依赖项,并查找'../node_modules/react-native-device-info'
中的内容。更具体地说,它将寻找.podspec文件。s.source_files = "RNDeviceInfo/*.{h,m}"
的内容。该文件将抓取匹配的源代码(RNDeviceInfo.h
和RNDeviceInfo.m
)并将它们存储在RNDeviceInfo
目录中。我猜测(纯属猜测),目录名称与s.name
相匹配。
react-native link ...
实际上也会自动完成相同的操作。引用自React文档:react-native link
将自动化本机库的链接。就像这个答案所说的那样,react-native link
会自动在cocoapods
的Podfile
中为你添加依赖项,如果你的ios项目使用了cocoapods
。
但是,在react-native v0.50.0
之前不是这样的。它直接将依赖项的信息(文件引用
,头文件搜索路径
,库
)写入到你的项目的xcodeproj
中。你仍然可以在react-native v0.57中看到旧代码。
那么,为什么要使用cocoapods
呢?
我猜这是为了一致的包管理。如果没有cocoapods
,如果你的依赖项A依赖于iOS社区中的另一个流行模块B,A的作者需要编写一些脚本,比如install-B.sh
来下载B的文件,甚至更糟糕的是直接将B添加到A项目中。
例如,请参考react-native v0.48
中的ios-install-third-party.sh
。
此外,您的iOS开发同事希望使用cocoapods
(而不是xcodeproj
)。对于javascript开发人员和iOS开发人员来说,使用相同的包管理器非常重要。这样可以确保您了解项目包含的所有本机模块。
cocoapods
与react-native link
可以让我们充分利用这两个社区。
react-native link $package-name
命令时,它也会在我的 pod 文件中添加一个引用。这样做正确吗?好像我既通过 CocoaPods 安装了依赖,又通过 react-native link / node modules 安装了一遍? - Karl Taylor