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

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

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

我正在使用的库之一有点问题,因为该应用程序只能正确编译:

  • ...在 安卓使用时 "react-native": "0.42.0" .
  • ...在 iOS 使用时 "react-native": "0.37.0" .

  • (无论是库本身,还是 react-native 的特定版本对于本次讨论都不重要。重要的是我似乎“同时”需要两个单独的版本——每个平台一个不同的版本。)

    我正在寻找一种方法来拥有一个单一的代码库,该代码库可以使用任何平台的相关工具进行编译,无需任何修改1。我想到的解决方案是(以某种方式):
  • 为每个移动操作系统指定不同的软件包版本。
  • 有完全不同的package.json每个平台的文件。

  • 但是,我不知道如何实现上述任一目标,或者它们是否可能。我尝试添加 .ios.androidReact-Native docs on platform-specific code 中所述,但 npm 无法识别这些文件。

    所以我的问题是:
  • 我的想法是否可行,如果可行 - 如何?
  • 有没有其他方法可以获得所需的结果?


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

    最佳答案

    还没有试过,但我要去。有人建议我试试这个:“将 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"
    

    关于npm - 适用于 Android 和 iOS 的不同软件包版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42586022/

    相关文章:

    ios - 没有已知的类方法(facebook sdk 集成)

    javascript - 在 React Native 中传递来自两个类的数据

    java - 类型 [类名] 的方法未定义

    javascript - 如何在 typescript 中构建具有双向对等依赖性的库?

    javascript - Angular 2,Node js 错误 npm 运行服务器 :prod

    javascript - React Native Button onPress 函数示例

    java - Maven 不使用父 pom 的依赖项进行编译

    java - 编织 Artifact 的 Maven 范围

    node.js - npm 无法从 registry.npmjs.org 安装

    javascript - Node Schedule是否产生/ fork 新进程