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

Dev*_*-iL 8 dependencies os-dependent multiple-versions npm react-native

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

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

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

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

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

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

但是,我不知道如何实现上述任何一种方法,或者它们是否可行.我尝试添加.ios在平台特定代码.androidReact-Native文档中进行了解释,但是npm无法识别这些文件.

所以我的问题是:

  1. 我的想法是否可行,如果可行 - 如何?
  2. 有没有其他方法可以获得理想的结果?

1在类似C的代码中,使用预处理器标志会很容易.

Sar*_*rón -1

还没尝试过,但我会尝试。有人建议我尝试这个:“将 npm 别名与package.jsonMetro 支持的特定于平台的文件结合起来(例如Component.ios.js)”

\n\n

可能类似于\xe2\x80\xa6

\n\n
{\n  "package-v1": "http://example.com/package-v1",\n  "package-v2": "http://example.com/package-v2",\n   // or GitHub based\n  "package-v1": "orgname/package#v1",\n  "package-v2": "orgname/package#v2",\n}\n\n// Component.ios.js\nimport "package-v1"\n\n// Component.android.js\nimport "package-v2"\n
Run Code Online (Sandbox Code Playgroud)\n