适用于Android和iOS的不同软件包版本

时间:2017-03-03 18:27:12

标签: npm react-native dependencies multiple-versions os-dependent

我正在使用React Native为Android和iOS开发应用程序。

我使用的其中一个库有点问题,因为应用只能正确编译:

    使用"react-native": "0.42.0"
  • ... Android
  • ...使用"react-native": "0.37.0" iOS

(图书馆本身,以及react-native的特定版本都不适用于此讨论。重要的是,我似乎需要两个单独的版本" at同一时间" - 每个平台不同的一个。)

我正在寻找一种方法,可以使用任何平台的相关工具编译单个代码库,无需任何修改 1 。我想到的解决方案是(以某种方式):

  • 为每个移动操作系统指定不同的软件包版本。
  • 每个平台都有完全不同的package.json个文件。

但是,我不知道如何实现上述任何一项,或者他们是否可能。我尝试按React-Native docs on platform-specific code中的说明添加.ios.android,但是npm并不识别这些文件。

所以我的问题是:

  1. 我的想法是否可行,如果可行 - 怎么样?
  2. 有没有其他方法可以获得理想的结果?
  3. 1 在类似C的代码中,使用预处理器标志会很容易。

1 个答案:

答案 0 :(得分:0)

还没有尝试过,但是我要去尝试。有人建议我尝试一下:“将package.json中的npm别名与Metro支持的特定于平台的文件(例如Component.ios.js)结合起来

可能类似于...

{
  "package-v1": "http://example.com/package-v1",
  "package-v2": "http://example.com/package-v2",
   // or GitHub based
  "package-v1": "orgname/package#v1",
  "package-v2": "orgname/package#v2",
}

// Component.ios.js
import "package-v1"

// Component.android.js
import "package-v2"