Comment gérer les dépendances et les bibliothèques dans les projets autochtones réagissent

Comprendre les dépendances dans la réaction autochtone

Dans React Native, les dépendances sont généralement gérées via npm ou fil – gestionnaires de paquets JavaScript qui gèrent l'installation de la bibliothèque, mises à jour, contrôle de version, et parfois même le lien de code natif. Contrairement à une application web standard, les projets React Native regroupent souvent les dépendances JavaScript aux côtés des dépendances natives (iOS CocoaPods, fichiers Gradle Android), rendant la gestion de la dépendance plus nuancée.

Les dépendances se répartissent en deux catégories :

La documentation React Native fournit des détails sur l'initialisation d'un projet et son arbre de dépendance par défaut.

Installation des dépendances

Pour ajouter une nouvelle bibliothèque à votre projet React Native, utilisez la commande install du gestionnaire de paquets. Par exemple, pour installer react-navigation[, lancez:

npm install @react-navigation/native @react-navigation/stack

ou avec fils:

yarn add @react-navigation/native @react-navigation/stack

Après l'installation, certaines bibliothèques nécessitent une liaison de code natif. Dans React Native 0.60+, le couplage automatique gère automatiquement la plupart des dépendances natives. Cependant, certaines bibliothèques (surtout celles avec des vues natives personnalisées ou des SDK tiers) nécessitent toujours des étapes manuelles :

Consultez toujours le guide d'installation de la bibliothèque – de nombreuses bibliothèques populaires post-installation étapes pour éviter les pannes d'exécution.

Utilisation de la liaison réagissant-native npx (Legacy)

Pour les projets utilisant React Native <0,60, vous devez relier manuellement les dépendances natives avec . Cette commande modifie votre fichier Pod et/ou . Si vous maintenez un projet hérité, envisagez de migrer vers l'auto-lien avec .

Économie de dépendances

Par défaut, npm et fil sauvegardent les paquets installés dans votre package.json fichier sous la section ou . Cela permet de suivre toutes les dépendances et leurs gammes de versions, en veillant à ce que les autres développeurs ou environnements de déploiement puissent installer le même ensemble de paquets avec une seule commande ( ou .

Lorsque vous installez un paquet sans le marquer explicitement comme une dépendance dev, il est sauvegardé sous . Pour les outils utilisés uniquement pendant le développement (par exemple, , , ), utilisez:

npm install --save-dev package-name
yarn add --dev package-name

Le maintien d'une séparation claire entre les dépendances d'exécution et de dev réduit la taille du paquet dans la production et empêche l'inclusion accidentelle des utilitaires de build-time dans l'archive de l'application store.

Gestion des versions de dépendance

Spécifier les versions exactes dans votre package.json aide à prévenir les problèmes inattendus causés par les mises à jour. Vous pouvez utiliser la version sémantique (semver) pour contrôler les mises à jour:

Pour les applications de production, épinglez vos dépendances directes à des versions précises (p. ex. ) pour éviter les ruptures accidentelles pendant le déploiement. Utilisez un fichier de verrouillage ( ou ) pour garantir que chaque installation produit des arbres identiques .

Résolution des conflits de versions

Lorsque deux bibliothèques nécessitent des versions différentes du même paquet, vous pouvez rencontrer des avertissements de dépendance ou des erreurs d'exécution.

Pour React Native, porter une attention particulière aux versions contradictoires de , , ou des modules natifs comme . Les versions incompatibles peuvent causer des erreurs cryptographiques comme -Native module ne peut pas être trouvé.

Mise à jour des dépendances

La mise à jour régulière des dépendances est essentielle pour la sécurité, les performances et l'accès aux nouvelles fonctionnalités.

Lors de la mise à jour du noyau React Native lui-même ( paquet), toujours suivre le React Native guide de mise à jour et utiliser pour fusionner les changements dans vos fichiers modèles de projet. Testez soigneusement sur les simulateurs iOS et Android et les appareils réels après toute mise à jour majeure.

Mises à jour automatiques avec CI/CD

Dans un pipeline d'intégration continue, créez une tâche qui fonctionne ou périodiquement, crée une demande de mise à jour mineure et déclenche des suites de test complètes. Cela empêche la pourriture de dépendance tout en maintenant un environnement stable.

Suppression des dépendances non utilisées

Lorsqu'une bibliothèque n'est plus utilisée, retirez-la pour réduire la taille du paquet et simplifier la maintenance:

npm uninstall library-name
yarn remove library-name

Les paquets non utilisés peuvent s'attarder dans même après leur retrait s'ils étaient des dépendances transitoires. Exécutez ou pour supprimer les paquets étrangers. Pour un nettoyage plus approfondi, considérez:

Meilleures pratiques de gestion de la dépendance

Manipulation des dépendances autochtones avec les Pois de cacao et Gradle

Pour iOS, toujours engager pour verrouiller les versions des pods natifs. Exécutez lorsque vous mettez à jour une bibliothèque React Native pour obtenir la dernière version de pod compatible. Pour Android, assurez-vous que vos n'ont pas de valeurs contradictoires ou dans toutes les bibliothèques.

Utilisation de monorepos avec React Native

Si votre projet utilise un monorepo (par exemple Nx, Turborepo, Lerna), gérer les dépendances au niveau racine avec des espaces de travail. Attention avec le holding – certaines bibliothèques autochtones de Réaction peuvent exiger des options pour éviter les conflits de dépendance transitoires.

Pièges courants et comment les éviter

Ressources extérieures

Une gestion efficace de la dépendance permet de maintenir votre projet React Native en sécurité, efficace et durable. Ces pratiques permettront de rationaliser le développement, de réduire les problèmes potentiels causés par des bibliothèques dépassées ou incompatibles et de permettre à votre équipe de se concentrer sur la construction de fonctionnalités plutôt que de lutter contre l'enfer de la dépendance.