我在react-native中创建了几个共享通用组件的移动应用程序。我在处理依赖项时遇到了困难。这是我做的,这很乏味,有更好的方法吗?
"dependencies": {
"common-components": "file:../common-components"
},
我在不同的应用程序中使用它:
import XXX from 'common-components/src/...'
现在这很好,因为所有其他依赖项都在" common-components"中,但只要其中一个具有本机代码,我就不得不在每个应用程序中再次链接库。
例如,如果我使用" react-native-image-picker",我必须在每个应用程序中再次安装它并将其链接到XCode,编辑build.gradle等等。
有更好的方法吗?
答案 0 :(得分:1)
我听说过共享代码在monorepo中进行管理的项目。这可能有助于管理共享代码,但不能解决N个应用程序N次链接本机模块的问题。
但是,有react-native link
应该使该过程自动化,并简化许多本地模块的链接。请注意,如果您只是升级本机依赖项,则无需重新链接。
或者,我认为应该可以将多个本机模块包装为一个。如果您查看RN回购中的MainReactPackage.java,它将包装几个本机模块。我想可以通过静态库在iOS上采用类似的机制。显然,这意味着要选择性地包含某些模块而不是其他模块并不容易。
答案 1 :(得分:0)
就像您自己说的那样,使用重复的代码库更容易。为了解决这个问题,您可以为共享组件创建自己的包管理器。为每个组件创建一个脚本,将其依赖关系添加到package.json并配置gradle和XCode。添加一个简单的GUI,单击即可包含您的组件。
这似乎需要大量前期工作,但是: -您将拥有完全的控制权 -一旦有了安装组件的脚本,每次在新应用程序上使用该组件时,您都可以节省时间 -在进行更新的情况下,您也可以创建一个脚本来处理该问题