Wie man Abhängigkeiten verwaltet und Bibliotheken in React Eingeborene Projekte
Abhängigkeiten in React Native verstehen
Abhängigkeiten sind externe Bibliotheken oder Module, auf die Ihr Projekt angewiesen ist, um Funktionalität hinzuzufügen, die Entwicklung zu optimieren oder die Leistung zu verbessern. In React Native werden Abhängigkeiten typischerweise über npm oder garn verwaltet - JavaScript-Paketmanager, die Bibliotheksinstallation, Updates, Versionskontrolle und manchmal sogar native Codeverknüpfung übernehmen. Im Gegensatz zu einer Standard-Web-App bündeln React Native-Projekte häufig JavaScript-Abhängigkeiten neben nativen Abhängigkeiten (iOS CocoaPods, Android Gradle-Dateien), wodurch das Abhängigkeitsmanagement nuancierter wird.
Abhängigkeiten lassen sich in zwei Kategorien einteilen:
- JavaScript-Abhängigkeiten – reine JS-Bibliotheken (z. B. , ), die ohne native Konfiguration funktionieren.
- Native Dependencies – Bibliotheken, die eine Überbrückung mit nativem Code erfordern (z. B. , ).
Die React Native Documentation enthält Details zur Initialisierung eines Projekts und seines Standardabhängigkeitsbaums.
Abhängigkeiten installieren
Um Ihrem React Native-Projekt eine neue Bibliothek hinzuzufügen, verwenden Sie den Befehl install des Paketmanagers.
npm install @react-navigation/native @react-navigation/stack
oder mit Garnen:
yarn add @react-navigation/native @react-navigation/stack
Nach der Installation erfordern einige Bibliotheken eine Verknüpfung von nativem Code. In React Native 0.60+ übernimmt die automatische Verknüpfung automatisch die meisten nativen Abhängigkeiten. Bestimmte Bibliotheken (insbesondere solche mit benutzerdefinierten nativen Ansichten oder SDKs von Drittanbietern) erfordern jedoch immer noch manuelle Schritte:
- Für iOS: ausführen oder , um die CocoaPods zu installieren.
- Für Android: Die Bibliothek wird automatisch zusammengeführt, aber Sie müssen möglicherweise ein -Repository hinzufügen oder ändern, wenn das React Native-Paket der Bibliothek nicht automatisch registriert ist.
Überprüfen Sie immer die Installationsanleitung der Bibliothek – viele beliebte Bibliotheken führen Schritte nach der Installation durch, um Laufzeitabstürze zu vermeiden.
Verwendung von npx React-Native Link (Legacy)
Für Projekte, die React Native <0.60 verwenden, müssen Sie native Abhängigkeiten manuell mit verknüpfen. Dieser Befehl ändert Ihre Podfile und/oder . Wenn Sie ein Legacy-Projekt pflegen, sollten Sie die Migration zu einer Autolinking mit in Betracht ziehen.
Abhängigkeiten sparen
Standardmäßig speichern npm und garn installierte Pakete in Ihrer package.json Datei unter oder Abschnitt. Diese verfolgt alle Abhängigkeiten und ihre Versionsbereiche, um sicherzustellen, dass andere Entwickler oder Bereitstellungsumgebungen den gleichen Satz von Paketen mit einem einzigen Befehl installieren können ( oder .
Wenn Sie ein Paket installieren, ohne es explizit als Dev-Abhängigkeit zu markieren, wird es unter gespeichert.
npm install --save-dev package-name
yarn add --dev package-name
Die klare Trennung zwischen Laufzeit- und Entwicklerabhängigkeiten reduziert die Bündelgröße in der Produktion und verhindert die versehentliche Aufnahme von Build-Time-Dienstprogrammen in das App Store-Archiv.
Verwalten von Abhängigkeitsversionen
Die genaue Versionsbestimmung in Ihrem package.json hilft, unerwartete Probleme durch Updates zu vermeiden.
- – akzeptiert jede kleinere oder Patch-Version über 1.0.0 (z. B. 1.1.0, 1.2.5), aber nicht 2.0.0.
- – akzeptiert nur Patch-Versionen über 1.0.0 (z. B. 1.0.1, 1.0.9), aber nicht 1.1.0.
- – genau auf Version 1.0.0 fixiert (keine Updates).
Bei Produktions-Apps sollten Sie Ihre direkten Abhängigkeiten an exakte Versionen (z. B. ) anheften, um versehentliche Bruchänderungen während der Bereitstellung zu vermeiden.
Lösung von Versionskonflikten
Wenn zwei Bibliotheken unterschiedliche Versionen desselben Pakets benötigen, können Peer-Abhängigkeitswarnungen oder Laufzeitfehler auftreten.
- npm ls package-name – zeigt den Abhängigkeitsbaum an und hebt Duplikate hervor.
- yarn why package-name – erklärt, warum ein Paket installiert ist.
- npm dedupe / yarn-deduplicate – flacht doppelte Pakete, wo möglich.
Bei React Native sollten Sie besonders auf widersprüchliche Versionen von , oder native Module wie achten. Inkonsistente Versionen können kryptische Fehler wie “Native module cannot be found” verursachen.
Aktualisierung von Abhängigkeiten
Die regelmäßige Aktualisierung von Abhängigkeiten ist für Sicherheit, Leistung und den Zugriff auf neue Funktionen von entscheidender Bedeutung.
- Minor/Patch Updates: oder – sicher für nicht-brechende Änderungen.
- Major-Updates:] stoßen die Version in manuell aus und führen aus.
- Interaktives Upgrade: verwenden (separat installiert), um zu sehen, welche Pakete die neuesten Versionen haben, und dann selektiv aktualisieren.
Wenn Sie das Core-Paket React Native selbst aktualisieren (), folgen Sie immer dem offiziellen React Native Upgrade Guide und verwenden Sie , um Änderungen in den Vorlagendateien Ihres Projekts zusammenzuführen.
Automatisieren von Updates mit CI/CD
Richten Sie in einer Continuous Integration Pipeline einen Job ein, der regelmäßig oder ausführt, eine Pull-Anfrage für kleinere Updates erstellt und vollständige Testsuiten auslöst.
Entfernen nicht genutzter Abhängigkeiten
Wenn eine Bibliothek nicht mehr verwendet wird, entfernen Sie sie, um die Größe des Pakets zu reduzieren und die Wartung zu vereinfachen:
npm uninstall library-name
yarn remove library-name
Nicht verwendete Pakete können auch nach dem Entfernen in verbleiben, wenn sie transitive Abhängigkeiten waren.
- depcheck – ein Tool, das ungenutzte Abhängigkeiten in Ihrer Codebasis identifiziert.
- npx respond-native unlink library-name (Vermächtnis) – entfernt alle nativen verlinkenden Artefakte.
Best Practices für Dependency Management
- Regelmäßig Abhängigkeiten überprüfen und aktualisieren. Planen Sie eine monatliche “Abhängigkeitsprüfung” – überprüfen Sie auf Sicherheitshinweise (), aktualisieren Sie auf die neuesten stabilen Versionen und bereinigen Sie veraltete Pakete.
- Behalte Abhängigkeiten auf dem erforderlichen Minimum. Vermeiden Sie Bibliotheken mit “Küchenspüle”; wählen Sie fokussierte, gepflegte Alternativen (z. B. für Icons, anstatt ein gesamtes UI-Kit zu importieren.
- Verwende semantische Versionierung, um Updates zu steuern. Pin Hauptversionen und verlasse dich auf Sperrdateien für die Reproduzierbarkeit.
- Testen Sie gründlich nach der Aktualisierung von Abhängigkeiten. Führen Sie Unit-Tests, Integrationstests und manuelle UI-Tests auf beiden Plattformen aus. Achten Sie auf verändertes natives Modulverhalten.
- und Sperrdateien sauber halten. und manuelle Bearbeitungen vermeiden, die Inkonsistenzen verursachen können. oder der Versionskontrolle zuweisen, um identische Installationen in allen Umgebungen sicherzustellen.
- Bevorzugen Sie Garn über npm, wenn Sie deterministische Installationen und Arbeitsbereiche benötigen. Yarn Berry (v2+) bietet Plug'n'Play an, das Installationen beschleunigen kann, aber möglicherweise Kompatibilitätsprüfungen mit React Native erfordert.
- Verwenden Sie ], um häufige Abhängigkeits- und Umgebungsprobleme vor dem Debuggen zu diagnostizieren.
Umgang mit nativen Abhängigkeiten mit CocoaPods und Gradle
Führen Sie aus, um die Versionen nativer Pods zu sperren. Führen Sie aus, wenn Sie eine React Native-Bibliothek aktualisieren, um die neueste kompatible Pod-Version zu erhalten.
Verwendung von Monorepos mit React Native
Wenn Ihr Projekt ein Monorepo (z. B. Nx, Turborepo, Lerna) verwendet, verwalten Sie Abhängigkeiten auf Root-Ebene mit Workspaces.
Häufige Fallstricke und wie man sie vermeidet
- „Kann keine Modulfehler nach npm installieren: Löschen , und führen Sie die Neuinstallation aus.
- iOS Build schlägt fehl, nachdem Sie eine Bibliothek hinzugefügt haben: Stellen Sie sicher, dass Sie ausgeführt haben und dass die Bibliothek korrekt referenziert ist.
- Android-Laufzeitabsturz aufgrund fehlenden nativen Moduls: Stellen Sie sicher, dass das Android-Paket der Bibliothek automatisch registriert ist oder dass Sie manuell sein in hinzugefügt haben.
- Duplicate symbol or method conflicts: Use and resolve conflicting native codes by upgrade or downgrade one of the librarys.
Externe Ressourcen
- React Native Official Documentation – Dependencies
- npm installieren Befehlsreferenz
- Yarn Nutzung und Befehle
- audit-ci – Security Audits für CI
Effektives Abhängigkeitsmanagement hilft dabei, Ihr React Native-Projekt sicher, effizient und wartbar zu halten. Die Umsetzung dieser Praktiken wird die Entwicklung rationalisieren, mögliche Probleme durch veraltete oder inkompatible Bibliotheken reduzieren und es Ihrem Team ermöglichen, sich auf die Erstellung von Funktionen zu konzentrieren, anstatt die Abhängigkeitshölle zu bekämpfen.