Hoe afhankelijkheden en bibliotheken beheren in Native Projecten

Begrijp afhankelijkheden in React Native

Afhankelijkheden zijn externe bibliotheken of modules die uw project afhankelijk is van functionaliteit toe te voegen, stroomlijnen ontwikkeling, of verbeteren prestaties. In React Native, afhankelijkheden worden meestal beheerd via npm of garen . . JavaScript pakket managers die bibliotheek installatie, updates, versiecontrole, en soms zelfs native code koppeling behandelen. In tegenstelling tot een standaard webapp, React Native projecten vaak bundelen JavaScript afhankelijkheden naast inheemse afhankelijkheden (iOS CocoaPods, Android Gradle bestanden), waardoor afhankelijkheid management meer genuanced.

Afhankelijkheden vallen in twee categorieën:

De React Native documentation geeft details over het initialiseren van een project en de standaard afhankelijkheidsboom.

Afhankelijkheden installeren

Om een nieuwe bibliotheek toe te voegen aan uw React Native project, gebruik het installatiecommando van de pakketbeheerder. Bijvoorbeeld, om react-navigatie te installeren, start:

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

of met garen:

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

Na installatie moeten sommige bibliotheken de native code koppelen. In React Native 0.60+ worden automatisch de meeste oorspronkelijke afhankelijkheden door auto-linken verwerkt. Sommige bibliotheken (vooral die met eigen views of SDK's van derden) vereisen echter nog steeds handmatige stappen:

Controleer altijd de installatiegids van de bibliotheek . Veel populaire bibliotheken na-installeer stappen om runtime crashes te voorkomen.

Gebruik van npx reactie-native link (Legacy)

Voor projecten met React Native <0.60 moet u de oorspronkelijke afhankelijkheden handmatig koppelen aan . Dit commando wijzigt uw Podfile en/of . Als u een legacyproject in stand houdt, overweeg dan om te migreren naar automatisch-linken met .

Afhankelijkheden opslaan

Standaard slaan npm en garen geïnstalleerde pakketten op in uw package.json] bestand onder de sectie of . Dit houdt alle afhankelijkheden en hun versiebereiken bij, zodat andere ontwikkelaars of implementatieomgevingen dezelfde pakketen kunnen installeren met één commando ( of ).

Wanneer u een pakket installeert zonder het expliciet te markeren als een dev afhankelijkheid, wordt het opgeslagen onder . Voor gereedschappen die alleen tijdens ontwikkeling worden gebruikt (bv. , , ), gebruik:

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

Het behoud van een duidelijke scheiding tussen runtime en dev afhankelijkheden vermindert de bundelgrootte in de productie en voorkomt dat per ongeluk build-time utilities in het archief van de app-opslag worden opgenomen.

Afhankelijkheidsversies beheren

Het specificeren van exacte versies in uw pakket.json helpt onverwachte problemen als gevolg van updates te voorkomen. U kunt semantische versiering (semver) gebruiken om updates te sturen:

Voor productie-apps, pin uw directe afhankelijkheden naar exacte versies (bijv. ) om toevallige breuk veranderingen tijdens de implementatie te voorkomen. Gebruik een slot bestand ( of ) om te garanderen dat elke installatie produceert identieke bomen.

Versieconflicten oplossen

Wanneer twee bibliotheken verschillende versies van hetzelfde pakket vereisen, kunt u intercollegiale afhankelijkheidswaarschuwingen of runtimefouten tegenkomen. Tools om conflicten op te lossen:

Voor React Native, extra aandacht besteden aan conflicterende versies van , , of native modules zoals ]. Inconsistente versies kunnen cryptische fouten veroorzaken zoals

Afhankelijkheden bijwerken

Regelmatig updaten afhankelijkheden is van vitaal belang voor veiligheid, prestaties en toegang tot nieuwe functies. Gebruik de volgende benaderingen:

Bij het updaten van de kern React Native zelf ( pakket), altijd volgen de officiële React Native upgrade gids[ en gebruiken ] om wijzigingen te mergen in uw project. Test grondig op zowel iOS en Android simulatoren en echte apparaten na een belangrijke update.

Automatisering van updates met CI/CD

In een continu integratiepijplijn, zet een taak op die periodiek of ] draait, creëert een pull verzoek voor kleine updates, en activeert volledige testsuites. Dit voorkomt afhankelijkheid rot terwijl het handhaven van een stabiele omgeving.

Verwijderen van ongebruikte afhankelijkheden

Wanneer een bibliotheek niet meer wordt gebruikt, verwijder deze dan om de bundelgrootte te verminderen en het onderhoud te vereenvoudigen:

npm uninstall library-name
yarn remove library-name

Niet gebruikte pakketten kunnen blijven hangen in zelfs na verwijdering als ze transitieve afhankelijkheden waren. Voer of uit om externe pakketten te verwijderen. Voor een grondigere opruiming, overwegen:

Beste praktijken voor afhankelijkheidsmanagement

Handling Native Afhankelijkheden met CocoaPods en Gradle

Voor iOS, altijd commit om de versies van native pods te vergrendelen. Start wanneer u een React Native bibliotheek upgrade om de nieuwste compatibele pod versie te krijgen. Voor Android, ervoor zorgen dat uw niet tegenstrijdig of waarden in bibliotheken.

Monorepos gebruiken met React Native

Als uw project een monorepo gebruikt (bijv. Nx, Turborepo, Lerna), beheer dan afhankelijkheden op rootniveau met werkruimten. Wees voorzichtig met het hijsen van .. sommige React Native bibliotheken kunnen opties nodig hebben om transitieve afhankelijkheidsconflicten te voorkomen.

Vaak Pitfalls en hoe ze te vermijden

Externe middelen

Effectieve afhankelijkheidsbeheer helpt uw React Native project veilig, efficiënt en onderhoudbaar te houden. Na deze praktijken zal de ontwikkeling worden gestroomlijnd, potentiële problemen veroorzaakt door verouderde of incompatibele bibliotheken verminderen en uw team in staat stellen zich te concentreren op bouwfuncties in plaats van de afhankelijkheidshel te bestrijden.