2017-10-18 62 views
1

为了最大限度地利用代码,我们正在构建一组我们想要在多个移动应用程序中使用的组件。到目前为止,我已经能够在我的package.json中使用git存储库作为依赖项。React Native - 共享并重新使用组件

我使用多个本机模块作为我的主/核心部件模块的依赖关系,像这样:

include ':react-native-navigation' 
project(':react-native-navigation').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-navigation/android/app') 
include ':react-native-open-settings' 
project(':react-native-open-settings').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-open-settings/android') 
include ':react-native-localization' 
project(':react-native-localization').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-localization/android') 
include ':react-native-maps' 
project(':react-native-maps').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-maps/lib/android') 
include ':react-native-vector-icons' 
project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') 

现在,如果我想添加一个新的本地模块到我的核心应用程序,这需要在每我需要更新build.gradle和settings.gradle的子应用程序之一,因此新模块也会被编译并添加到项目中。

我期待到做这样的事情在我settings.gradle儿童应用:

include ':core' 
project(':core').projectDir = new File(rootProject.projectDir, '../node_modules/core/android/app') 

这似乎是第一步,但是这使得核心应用程序编译失败,因为“node_modules”文件夹丢失。在核心模块文件夹中再次安装所有模块似乎是一种矫枉过正的行为。

我的目标是:

  1. 有一个具有两个JS和本地零部件核心模块
  2. 创建具有这个核心作为一个依赖
  3. 更新核心版本,而无需手动更新孩子的应用所有儿童应用程序,最终删除手动步骤,导致在构建时出错。

回答

0

您是否考虑过使用私有npm存储库?您可以将所有可重用组件放入私有npm存储库,然后将它们装载到每个应用程序中。虽然我不知道这是否可以解决如何共享本地模块。

+0

我实际上已经有一个私人存储库。我的意思是,我使用git来加载核心模块,它可以工作,但正如你所说,它不会加载本地模块或依赖项,所以我必须编译并安装在每个子项目上。 – sfratini