我是否正确处理了具有公共代码库的多个项目?

时间:2018-06-01 14:13:14

标签: react-native

我在react-native中创建了几个共享通用组件的移动应用程序。我在处理依赖项时遇到了困难。这是我做的,这很乏味,有更好的方法吗?

  • 存储库"通用模块"有共享组件
  • 几个存储库包括常见的存储库,如下所示:

的package.json

"dependencies": {
    "common-components": "file:../common-components"
},

我在不同的应用程序中使用它:

import XXX from 'common-components/src/...'

现在这很好,因为所有其他依赖项都在" common-components"中,但只要其中一个具有本机代码,我就不得不在每个应用程序中再次链接库。

例如,如果我使用" react-native-image-picker",我必须在每个应用程序中再次安装它并将其链接到XCode,编辑build.gradle等等。

  • 需要永远
  • 我的链接依赖项是否捆绑了两次?
  • 我担心必须更换/升级其中一个......

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

我听说过共享代码在monorepo中进行管理的项目。这可能有助于管理共享代码,但不能解决N个应用程序N次链接本机模块的问题。

但是,有react-native link应该使该过程自动化,并简化许多本地模块的链接。请注意,如果您只是升级本机依赖项,​​则无需重新链接。

或者,我认为应该可以将多个本机模块包装为一个。如果您查看RN回购中的MainReactPackage.java,它将包装几个本机模块。我想可以通过静态库在iOS上采用类似的机制。显然,这意味着要选择性地包含某些模块而不是其他模块并不容易。

答案 1 :(得分:0)

就像您自己说的那样,使用重复的代码库更容易。为了解决这个问题,您可以为共享组件创建自己的包管理器。为每个组件创建一个脚本,将其依赖关系添加到package.json并配置gradle和XCode。添加一个简单的GUI,单击即可包含您的组件。

这似乎需要大量前期工作,但是: -您将拥有完全的控制权 -一旦有了安装组件的脚本,每次在新应用程序上使用该组件时,您都可以节省时间 -在进行更新的情况下,您也可以创建一个脚本来处理该问题

相关问题