درک وابستگی ها در React Native

بسته ها کتابخانه ها یا ماژول های خارجی هستند که پروژه شما برای اضافه کردن قابلیت ها، توسعه خط، یا بهبود عملکرد، وابسته به React Native، معمولا از طریق npm یا نخ مدیریت می شود - مدیران بسته جاوا اسکریپت که نصب کتابخانه، به روز رسانی، کنترل نسخه و گاهی اوقات حتی کد بومی را بر خلاف یک برنامه وب استاندارد، React پروژه های بومی اغلب وابستگی به جاوا اسکریپت بومی (icocox، سیستم عامل وابسته سازی، مدیریت وابستگی بیشتر، ساخت فایل های وابسته به Android) را دارند.

وابستگی ها به دو دسته تقسیم می شوند:

  • [[۱] [۱۰] [۱۰] [۱۰] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱۰] [۱]]] [۱۰] [۱]] [۳]] [۳]] [۳]] [۳]] [۳] [۱]] [۱] [۳]] [۳] [۳] [۶] [۶]]] [۶] [۶] [بر [بر [بر [۶]]]]]]]]]]]]]] [بر [بر [بر [بر [و]]]]]]]]]]]]] [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى]]]]] [بر
  • وابستگی های غیر انتفاعی - کتابخانه هایی که نیاز به کد بومی دارند (به عنوان مثال، ، این اغلب نیاز به گام های تنظیمات اضافی مانند یا تغییرات راهنمای Gradle.

مستندات بومی [FLT 1] جزئیاتی در مورد اولیه سازی یک پروژه و درخت وابستگی پیش فرض آن ارائه می دهد.

نصب بسته های بسته

برای اضافه کردن یک کتابخانه جدید به پروژه React Native، از دستور نصب مدیر بسته استفاده کنید.

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

یا با نخ:

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

پس از نصب، برخی از کتابخانه ها نیاز به پیوند کد بومی دارند.در React Native 0.60+، اتصال خودکار به طور خودکار بیشتر وابستگی های بومی را کنترل می کند، با این حال، کتابخانه های خاصی (به ویژه کسانی که دارای دیدگاه های بومی سفارشی یا SDK های شخص ثالث هستند) هنوز هم نیاز به مراحل دستی دارند:

  • برای iOS: اجرا کنید یا به جای آن، آن را نصب کنید.
  • برای اندروید: کتابخانه به طور خودکار ادغام شده است، اما شما ممکن است نیاز به اضافه کردن یک مخزن یا تغییر [FLT 11] اگر بسته React Native کتابخانه ثبت خودکار نیست.

همیشه راهنمای نصب کتابخانه را بررسی کنید – بسیاری از کتابخانه های محبوب مراحل پس از نصب را برای جلوگیری از تصادف در زمان اجرا می کنند.

استفاده از npx لینک واکنش پذیر (Legacy)

برای پروژه هایی که از React Native < استفاده می کنند؛0.60، شما باید وابستگی های بومی را به صورت دستی با پیوند دهید، این دستور فایل Podfile و / یا [FLT13] را اصلاح می کند.اگر شما یک پروژه میراث را حفظ می کنید، مهاجرت به خودکار را با تغییر دهید.

پس انداز وابستگی

به طور پیش فرض، npm و نخ بسته های نصب شده را به بخش (FLT: 16) خود ذخیره می کنند؛ این امر تمام وابستگی ها و محدوده های نسخه آنها را ردیابی می کند، اطمینان حاصل می کند که سایر توسعه دهندگان یا محیط های استقرار می توانند همان بسته ها را با یک فرمان واحد نصب کنند (F:17F یا (LT 17: 17) یا (f:18).

هنگامی که شما بسته ای را بدون علامت گذاری به عنوان یک وابستگی dev نصب می کنید، آن را در زیر ذخیره می کنید (FLT 19)، برای ابزارهایی که تنها در طول توسعه استفاده می شوند (به عنوان مثال، [FLT20]، ، استفاده کنید:

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

حفظ یک جدایی واضح بین وابستگی های زمان اجرا و dev باعث کاهش اندازه بسته در تولید و جلوگیری از ورود تصادفی به ساخت و ساز زمان در آرشیو فروشگاه برنامه.

مدیریت نسخه های وابسته

{{bjson}} با استفاده از نسخه های دقیق در |package.json به جلوگیری از مسائل غیر منتظره ناشی از به روز رسانی کمک می کند.

  • هر نسخه کوچک یا پچ بالاتر از 1.0.0 (به عنوان مثال، 1.1.0، 1.2.5) را قبول کنید، اما نه 2.0.0.
  • [FLT 25] - تنها نسخه های پچ را بالاتر از 1.0.0 (به عنوان مثال، 1.0.1، 1.0.9) را می پذیرد، اما نه 1.1.0.
  • [FLT 26] - به نسخه دقیق 1.0.0 (بدون به روز رسانی) اشاره کرد.

برای برنامه های تولیدی، وابستگی های مستقیم خود را به نسخه های دقیق (به عنوان مثال، [FLT 27] برای جلوگیری از تغییرات تصادفی در هنگام استقرار، استفاده از یک فایل قفل ( یا [FLT 29] برای تضمین اینکه هر نصب یک از آنها را تولید می کند (FLT:30).

حل مناقشات نسخه

هنگامی که دو کتابخانه به نسخه های مختلف از همان بسته نیاز دارند، ممکن است با هشدارهای وابستگی به همسالان یا خطاهای زمان اجرا مواجه شوید.

  • [[۱] [۱۰] [۱۰] [۱] [۱۰] [۱]]] [۱]] [۱]] [۱]] - درخت وابستگی را نشان می دهد و تکرار می کند.
  • [در این باره]، چرا نام بسته [FLT 1] را ذکر می کند، توضیح می دهد که چرا یک بسته نصب شده است.
  • [در این هنگام] [در این صورت] / [FLT] [FLT3] [FLT3] [به] بسته های تکراری در صورت امکان، به صورت زیر است.

برای React Native، توجه بیشتری به نسخه های متناقض [FLT 31]، ، یا ماژول های بومی مانند ، نسخه های شرکت کننده می توانند خطاهای رمزنگاری مانند " ماژول های غیر خلاق را پیدا کنند.

افزایش وابستگی

به طور منظم به روز رسانی وابستگی ها برای امنیت، عملکرد و دسترسی به ویژگی های جدید حیاتی است.استفاده از روش های زیر:

  • [در این باره] به روز رسانی های یا (FLT:34) یا را برای تغییرات غیر قابل ردیابی ایمن می کند.
  • به روز رسانی های ملات: به صورت دستی بر نسخه [FLT36] ضربه بزنید و اجرا کنید تغییر کتابخانه برای شکستن تغییرات API.
  • [[۱] [۱۰] [[۱۰]] [[۱۰]] [[۱۰]]] [[۳]]] [[۳]] [۳] [۳]] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [به صورت جداگانه] استفاده کنید تا ببینید کدام بسته ها نسخه های تازه ای دارند، سپس به روز رسانی انتخابی.

هنگامی که React Native را به روز رسانی کنید ([FLT 39] همیشه از راهنمای رسمی React Native Update پیروی کنید و از برای ادغام تغییرات در فایل های قالب پروژه خود استفاده کنید.

به روز رسانی خودکار با CI / CD

در یک خط لوله ادغام مداوم، یک کار را تنظیم کنید که (FLT:41) یا به صورت دوره ای، درخواست کشش برای به روز رسانی های جزئی ایجاد می کند و باعث ایجاد سوئیت های تست کامل می شود، این مانع از وابستگی رو به پوسیدگی در حالی که یک محیط پایدار را حفظ می کند.

حذف وابستگی های غیر قابل استفاده

هنگامی که یک کتابخانه دیگر استفاده نمی شود، آن را برای کاهش اندازه بسته و ساده سازی تعمیر و نگهداری استفاده کنید:

npm uninstall library-name
yarn remove library-name

بسته های استفاده نشده می توانند در حتی پس از حذف، اگر آنها وابستگی های گذرا بودند، اجرا (FLT:45) یا برای حذف بسته های اضافی.

  • چک ؛ ابزاری که وابستگی های استفاده نشده را در پایگاه کد شما مشخص می کند.
  • px واکنش نشان می دهد نام کتابخانه غیر لینکی - حذف هر گونه آثار لینک بومی.

بهترین روش ها برای مدیریت وابستگی

  • بررسی و به روز رسانی وابستگی ها برنامه ریزی ماهانه "حسابداری وابستگی" - بررسی مشاوران امنیتی ( ، به روز رسانی به آخرین نسخه های پایدار و تمیز بسته های منسوخ شده.
  • وابستگی به حداقل مورد نیاز را حفظ کنید.[۱۰] [FLT ۱] از کتابخانه های "kitchen سینک" اجتناب کنید؛ گزینه های متمرکز و نگهداری شده (به عنوان مثال، برای آیکون ها به جای واردات کل کیت UI را انتخاب کنید.
  • استفاده از نسخه معنایی برای کنترل به روز رسانی.[۱۰] نسخه های اصلی پین و تکیه بر فایل های قفل برای تکرار.
  • تست به طور کامل پس از به روز رسانی وابستگی.[۱۰] تست واحد، تست های یکپارچه و تست UI دستی بر روی هر دو سیستم عامل توجه به رفتار ماژول بومی تغییر یافته است.
  • [در این میان] [و] [و] فایل های تمیز و پاکیزه را نگه دارید [و] از ویرایش های دستی که می توانند در تناقض ها معرفی کنند، اجتناب کنید. یا [FLT51] برای کنترل نسخه برای اطمینان از نصب های یکسان در محیط ها.
  • پیشفر نخ را بر روی npm اگر شما نیاز به نصب و فضای کاری تعیین کننده دارید.[۱۰] آکوی (v2+) پلاگین پلاگین را ارائه می دهد که می تواند سرعت نصب را افزایش دهد اما ممکن است نیاز به بررسی سازگاری با React Native داشته باشد.
  • استفاده از [FLT 1 ] برای تشخیص وابستگی و مسائل محیط زیست مشترک قبل از اشکال زدایی.

مدیریت وابستگی های بومی با CocoaPods و Gradle

برای iOS، همیشه متعهد به قفل کردن نسخه های بومی pods (FLT:54) هنگامی که شما یک کتابخانه بومی React را ارتقا می دهید تا آخرین نسخه سازگار برای اندروید را دریافت کنید، اطمینان حاصل کنید که شما در تضاد با [FLT 56] یا [FLT] مقادیر در سراسر کتابخانه ها دچار مشکل نمی شود.

استفاده از مونومپوس با React Native

اگر پروژه شما از یک مونوپورپو (به عنوان مثال، Nx، Turborepo، Lerna) استفاده می کند، کنترل وابستگی ها در سطح ریشه با فضاهای کاری دقت کنید – برخی از کتابخانه های React ممکن است نیاز به (FLT 58 گزینه برای جلوگیری از درگیری های وابستگی حمل و نقلی داشته باشند.

قرص های معمول و چگونگی اجتناب از آن

  • [در این باره] [در این باره]، [و] [و] [و] [از [مشرکان] [و [مشرکان] [و] [و] [و] [مشرکان]] [و [به]]]] خطا [و [از این رو] [و] [با استفاده از فایل های قفل] [و [مشرکانه]]]] [و [و [در برابر [و [و [و [و [و [و [و [و [در برابر [و]]]] نصب و [و [و [و [و [و [و [در برابر [و [و [و [و [و]]]]]]]]]]]]]]]]]]]]] [در برابر [و [و [و [در برابر [و [و [و [و [و [از [از روی [از روی [براى [و [از [از [از [براى [براى]]]] [براى استفاده از [و [و [و [و [و [و [و [براى استفاده از فایل های [و [و [و [و [و [و
  • iOS پس از اضافه کردن یک کتابخانه شکست می خورد: اطمینان حاصل کنید که و فایل کتابخانه به درستی مرجع داده شده است. Check Xcode برای "libary not found" خطا.
  • سقوط زمان اجرا به دلیل گم شدن ماژول بومی: بررسی کنید که بسته آندروید کتابخانه ثبت شده است و یا به صورت دستی آن را اضافه کنید در .
  • نماد یا تعارضات روش: استفاده از و حل و فصل کدهای بومی متناقض با ارتقاء یا پایین آوردن یکی از کتابخانه ها.

منابع خارجی

  • [[ویرایش] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱]
  • [[ویرایش] [۱]
  • [۱] [۱۰] استفاده و فرمان [[۱۰]
  • [[ویرایش] [۱] [۱۰] [۱] [۱] [۱] [۱۰] [۱] [۱] [۱]

مدیریت وابستگی موثر به حفظ پروژه React Native شما امن، کارآمد و قابل نگهداری است، پس از این شیوه ها توسعه را ساده می کند، مسائل بالقوه ایجاد شده توسط منسوخ شده یا کتابخانه های ناسازگار را کاهش می دهد و به تیم شما اجازه می دهد تا به جای مبارزه با وابستگی به جهنم، بر روی ویژگی های ساختمان تمرکز کنند.