react-native link
做了什么?
https://github.com/react-native-community/react-native-svg doc说要做
react-native link react-native-svg
与
相同pod 'RNSVG', :path => '../node_modules/react-native-svg'
# pod install
答案 0 :(得分:7)
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文件。
如果您查看.podspec文件,您会看到类似
的内容 s.source_files = "RNDeviceInfo/*.{h,m}"
。所有文件都要抓取匹配的源(RNDeviceInfo.h
和RNDeviceInfo.m
)并将它们存储在RNDeviceInfo
目录中。我想(总猜),目录名称匹配s.name
。
react-native link ...
会自动地做同样的事情。我引用了React docs:
链接您的原生依赖项: react-native link 完成!所有具有本机依赖关系的库都应该成功链接到您的iOS / Android项目。
两者都可以实现相同的结果,使用react-native link
将自动链接本机库。
答案 1 :(得分:1)
就像this answer所说的那样,react-native link
会自动在cocoapods
Podfile
中为您添加依赖项,如果您的ios项目使用了cocoapods
。
但是react-native v0.50.0
之前不是这样。它将依赖项的信息(file reference
,header search path
,library
)直接写到项目的xcodeproj
中。您仍然可以在react-native v0.57中看到旧代码。
那么,为什么要使用cocoapods
?
我想这是用于一致的软件包管理。如果没有cocoapods
,如果您的依赖项A依赖于iOS社区中另一个流行的模块B,则A的作者将需要编写诸如install-B.sh
之类的脚本来下载B的文件,甚至更糟糕的是添加B直接进入A项目。
例如,请参见ios-install-third-party.sh
in react-native v0.48。
此外,您的iOS开发同事希望使用cocoapods
(而不是xcodeproj
)。 对JavaScript开发人员和iOS开发人员使用相同的包管理器很重要。双方都知道项目中包括的所有本机模块。
react-native link
和cocoapods
可以让我们利用两个社区。