Pag - unawa sa mga Dependensiya sa Pagkilos ng Katutubo

Ang mga dependencies ay mga panlabas na aklatan o module na ang inyong proyekto ay umaasa sa pagdaragdag ng functionity, streamline development, o pagpapabuti ng performance. Sa reaksyon Katutubo, ang dependencies ay karaniwang pinangangasiwaan sa pamamagitan ng npm o yarn – JavaScript package managers na humahawak ng mga installment ng aklatan, updates, control, at kung minsan ay maging ang katutubong code linking. Hindi tulad ng isang pamantayang web app, na nagreresultang mga Katutubong proyekto ay kadalasang nagbibigkis ng JavaScrips sa tabi ng mga katutubong dependensiya (iOS Cocoapood, Android na mga files.

Ang mga dependensiya ay nahahati sa dalawang kategorya:

  • JavaScript dependencies – purong JS na mga aklatan (e.g., , ) na gumagana nang walang anumang katutubong pagsasaayos.
  • – mga aklatan na nangangailangan ng pagpapakasal sa mga katutubong kodigo (e.g., , ). Ito ay kadalasang nangangailangan ng karagdagang mga setup na hakbang tulad ng o mga manufacturing Gradle change.

Ang [React Native dokumentment ay nagbibigay ng detalye sa pag-uuna ng isang proyekto at ang hindi pagtupad na puno nito ng dependensiya.

Paglalagay ng mga Dependensiya

Halimbawa, upang magdagdag ng bagong aklatan sa iyong proyektong Production Native, gamitin ang utos ng namamahala ng pakete. [[FLT], patakbuhin:

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

o may sinulid:

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

Pagkatapos ng pagluklok, ang ilang mga aklatan ay nangangailangan ng pag-uugnay ng katutubong kodigo. Bilang reaksyon Katutubo 0.60+, ang auto-linking ay awtomatikong humahawak ng karamihan sa mga katutubong dependensiya. Gayunpaman, ang ilang mga aklatan (lalo na yaong may mga nakaugaliang katutubong pananaw o ikatlong glueparty SDK) ay nangangailangan pa rin ng mga manu-manong hakbang:

  • Para sa iOS: patakbuhin o upang i-install ang mga ods ng CocoaPods.
  • Para sa Android: ang ng aklatan ay kusang pinagsama, subalit baka kailanganin mong magdagdag ng isang na restorasyon o pagbabago kung ang aklatan ay binibigyang - kahulugan ng mga taga - aklatan na may kinalaman sa Katutubong pakete na isnimitrit auto archizance register.

Laging suriin ang aklatan ng mga installing guide – maraming popular na aklatan ang nag - iinstala ng mga hakbang upang maiwasan ang mga banggaan sa panahon ng pagtakbo.

Para sa mga proyektong gumagamit ng receptive <0.60, dapat mong manu - manong iugnay ang mga dependensiya ng katutubo sa .[Inuuri ng utos na ito ang iyong Podfile at/o . Kung ikaw ay nag - iingat ng isang proyektong pamana, isaalang - alang ang pandarayuhan sa auto na nagreresulta sa .

Pagliligtas ng mga Dependensiya

Sa pamamagitan ng default, ang npm at sinulid ay nag-iipon ng mga naka-install na pakete sa iyong package.json file sa ilalim ng o section. Ito ay nagpapanatili ng track ng lahat ng dependensiya at kanilang bersyon, na tinitiyak na ang ibang developer o kapaligirang pang-setment ay maaaring mag-install ng parehong set ng mga pakete na may iisang utos ([FLT:[17][T][T][T.[18] [[T] [[T] [[T] [[T] [[T] [[18] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T]]]] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [

Kapag naglagay ka ng pakete nang hindi ito naglalagay ng marka bilang dev dependency, ito ay naliligtas sa ilalim . , , ), gamitin ang:

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

Ang pagpapanatili ng malinaw na paghihiwalay sa pagitan ng mga dependensiya ng pagtakbo at ng dev ay nakababawas sa laki ng bungkos sa produksiyon at humahadlang sa di - sinasadyang paglalakip ng mga kagamitang pantabing sa ap store.

Pagmamaniobra sa mga Bersiyon ng Dependensiya

Ang pag-uri ng eksaktong mga bersyon sa iyong package.json ay tumutulong upang maiwasan ang hindi inaasahang mga isyu na dulot ng mga update. Maaari kang gumamit ng semantikong bersyoning (seber) upang kontrolin ang mga update:

  • – tanggapin ang anumang menor de edad o patlang na bersyon na higit sa 1.0.0 (e.g., 1.1.0, 1.5) ngunit hindi 2.0.0.
  • – tanggapin lamang ang mga patnit na bersyon sa itaas ng 1.0.0 (e.g., 1.0.1, 1.0.9) ngunit hindi 1.1.0.
  • – pindutan ng eksaktong bersyon 1.0.0 (walang mga update).

Para sa mga app ng produksiyon, i-px ang iyong direktang dependencies sa eksaktong bersyon (e.g., ) upang maiwasan ang mga aksidenteng pagbasag ng mga pagbabago sa panahon ng pag-stat. Gamitin ang isang talaksang pang-lock ( o ) upang matiyak na ang bawat install ay nagbubunga ng magkatulad na mga puno.

Paglutas sa mga Di - pagkakasundo ng Bersiyon

Kapag ang dalawang aklatan ay nangangailangan ng iba't ibang bersiyon ng iisang pakete, maaaring makaharap mo ang mga babala ng mga kasama sa pagdepende o mga pagkakamali sa oras.

  • [update ls-name – nagpapakita ng puno ng dependency at nagtatampok ng mga replikasyon.
  • [kataon kung bakit naka-install ang pakete-name – paliwanag kung bakit naka-install ang isang pakete.
  • [npm dedupe[ / [[ – Mga person na kumokopya ng mga pakete hangga't maaari.

Para sa Responsibilidad Native, magbigay ng ekstrang pansin sa mga nagkakasalungatang bersyon ng , , o mga katutubong module tulad ng . Ang mga inkonsist na bersyon ay maaaring magdulot ng mga kamalian na hindi matutukoy gaya ng ⁇ Native module.[[[EX ⁇ ].[EFLT:33].

Nakapagpapasiglang mga Dependensiya

Ang regular na pag - a - up uping dependencies ay mahalaga para sa seguridad, pagganap, at pag - access sa mga bagong bahagi.

  • Minor/Patch updates: o – ligtas para sa mga hindi-pag-aalsang pagbabago.
  • Major updates: Ang manwal na pagbangga ng bersyon sa at pagtakbo .[Tupdates changelogs for break API change.
  • [[[T:] Gamitin (iluklok nang hiwalay) upang makita kung aling mga pakete ang may pinakabagong bersyon, pagkatapos ay pilipinong update.

Kapag tumaas ang core recessitive committ mismo ( package), laging sundin ang opisyal [Ract Native upgrade guide at gamitin upang pagsamahin ang mga pagbabago sa inyong projectijers template files. Pagsubok nang husto sa parehong iOS at Android simulator at tunay na mga aparato pagkatapos ng anumang malaking update.

Mga Update sa Pagmamamanipula sa Pamamagitan ng CI/CD

Sa isang patuloy na integrated pipeline, magtatag ng isang trabaho na tumatakbo o sa pana-panahon, lumikha ng isang kalso para sa mga menor de edad na update, at mag-udyok ng mga buong test suite.Ito ay pumipigil sa independence roles habang pinananatili ang isang matatag na kapaligiran.

Pag - aalis ng Di - nagamit na mga Dependensiya

Kapag hindi na ginagamit ang isang aklatan, alisin ito upang bawasan ang laki ng bungkos at gawing simple ang pagmamantini:

npm uninstall library-name
yarn remove library-name

Ang mga hindi na ginagamit na pakete ay maaaring manatili sa kahit na pagkatapos alisin kung ito ay transitive dependencies. Run o upang i-distrito ang mga ekstranivaeous na pakete. Para sa mas masusing paglilinis, isaalang-alang:

  • depcheck – isang kasangkapan na nagpapakilala ng mga hindi ginagamit na dependensiya sa iyong codebase.
  • [npx reactivity-native diverse library-name (legacy) – inaalis ang anumang katutubong linking artifacts.

Pinakamabuting mga Gawain Para sa Pagsugpo sa Dependensiya

  • [Talaksan ang review at update dependencies.[ [[kailangan ng sanggunian] Iayos ang isang buwanang ⁇ dependensiya audit ⁇ – tingnan ang mga seguridad na advisories (), i-apruba ang pinakabagong mga matatag na bersyon, at linisin ang mga luma nang pakete.
  • [[[T] Ilagay ang mga dependensiya sa pinakamababang kinakailangan.[ Iwasan ang mga aklatan ng ⁇ k ⁇ tchen sink ⁇ ; pumili ng nakatutok, mahusay na mga rentang pang-impormasyon (e.g., para sa mga imahen sa halip na mag-angkat ng isang buong UI kit).
  • Use semantic bersyoning to control updates. [[kailangan ng sanggunian] Pino pangunahing bersyon at umaasa sa mga talaksang pang-lock para sa reproduktibidad.
  • Pinaka-Tegular na topeded upding dependencies. Run unit tests, combination tests, at manufact UI testing sa parehong platform. magbigay pansin sa binagong katutubong pag-uugali ng module.
  • Iwasan ang mga pag-aayos ng manwal na maaaring magpahiwatig ng mga di-pagkakaiba. htil o upang matiyak ang mga parehong pag-install sa ibayo ng kapaligiran.
  • Ang princifer yarl sa ibabaw ng npm kung kailangan mo ng deterministikong mga install at workspace.[ [v2+] Ang Yarn Berry (v2+) ay nag-aalok ng Plug'n'nPlay, na maaaring mapabilis ang mga install ngunit maaaring mangailangan ng mga tsekeng pang-komedukasyon na may Propeksiyong Katutubo.
  • Use [ upang masuri ang mga karaniwang isyung dependensiya at pangkapaligiran bago i-brugging.

Pakikitungo sa mga Katutubong Dependensiya sa mga CocoaPod at Gradle

Para sa iOS, laging gumawa upang i-lock ang mga bersyon ng mga katutubong pod. Run kapag nag-upgrade ka ng isang production Native library upang makuha ang pinakabagong conflusion na bersyon ng pod. para sa Android, tiyakin na ang iyong ay walang pagkakasalungatan o halaga sa ibayo ng mga aklatan.

Paggamit ng monorepos na May mga Katangiang Katutubo

Kung ang iyong proyekto ay gumagamit ng monorepo (e.g., Nx, Turborepo, Lerna), pangasiwaan ang mga dependensiya sa antas ng trabaho sa pamamagitan ng mga workspace.Mag-ingat sa pag-angat – ang ilang mga resesibong Katutubong aklatan ay maaaring mangailangan ng mga pagpipilian upang maiwasan ang transitivation dependency conflicts.

Karaniwang mga Patibong at Kung Paano Maiiwasan ang mga Ito

  • [Cannot] Nakasumpong ng mga pagkakamaling moduleif pagkatapos ng npm install: Delete , , at tumakbong bagu-bagong install. Kung gumagamit ng sinulid, i-delete gayundin (ngunit maging maingat sa mga talaksang pangkandado).
  • Ang pagtatayo ng mga [[1] ay nabigo matapos magdagdag ng isang aklatan:[]] Ang Ensuryahan ay iyong pinatakbo at na ang aklatan ⁇ s poodfile ay tamang tinukoy. Check Xcode gumawa ng mga troso para sa ⁇ library na hindi natagpuan ang mga pagkakamali sa pamamagitan ng ⁇ .
  • Android runtime crash dahil sa nawawalang katutubong module: Verfiny na ang library EXOUTs Android package ay auto surgeurized o na manu - mano mong idinagdag ang nito sa .
  • [[Pangunahing simbolo o pagkakasalungatan: Gamitin at lutasin ang nagkakasalungatang mga kodigong katutubo sa pamamagitan ng pag-apruba o pag-iiba ng isa sa mga aklatan.

Mga Yaman sa Labas

Ang mabisang pangangasiwa sa dependency ay tumutulong upang mapanatiling matatag, mabisa, at napananatili ang iyong pagtugon sa proyekto ng mga Katutubo, anupat nababawasan ang potensiyal na mga isyu na dulot ng lipas na o di - magkakaugnay na mga aklatan, at hinahayaan ang inyong pangkat na magtuon ng pansin sa pagtatayo ng mga bahagi sa halip na labanan ang impiyerno na depende sa dependensiya.