2017-10-18 5 views
1

Afin de maximiser la réutilisation du code, nous construisons un ensemble de composants que nous voulons utiliser dans plusieurs applications mobiles. Jusqu'à présent, j'ai été capable de le faire en utilisant un dépôt git comme dépendance dans mon package.json.React Native - Partage et réutilisation des composants

J'utilise plusieurs modules natifs comme des dépendances dans mon module principal composant/core comme ceci:

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') 

Maintenant, si je veux ajouter un nouveau module natif dans mon application de base, cela exige que sur tous les une de mes applications enfants j'ai besoin de mettre à jour les build.gradle et settings.gradle, donc les nouveaux modules sont également compilés et ajoutés dans le projet.

Je cherche à faire quelque chose comme ça dans mes applications enfant settings.gradle:

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

Cela semble être la première étape, mais cela fait la compilation d'applications de base échouent parce que le dossier « node_modules » manque . L'installation de tous les modules à nouveau dans le dossier du module principal semble être une surcharge.

Mon objectif est de:

  1. Avoir un module de base qui a à la fois JS et composants natifs
  2. Créer des applications enfants qui ont ce noyau comme une dépendance
  3. Mise à jour la version de base sans avoir besoin de mettre à jour manuellement toutes les applications enfants, supprimant éventuellement les étapes manuelles conduisant à des erreurs lors de la construction.

Répondre

0

Avez-vous envisagé d'utiliser un dépôt privé de npm? Vous pouvez mettre tous vos composants réutilisables dans un dépôt npm privé, puis les charger pour chaque application. Bien que je ne sais pas si cela peut résoudre comment partager les modules natifs.

+0

En fait, j'ai déjà un dépôt privé. Je veux dire, j'utilise git pour charger le module de base et cela fonctionne, mais comme vous l'avez dit, il ne charge pas les modules natifs ni les dépendances, donc je dois compiler et installer sur chaque projet enfant. – sfratini