الترقية إلى إصدارات جديدة في React Native

من موسوعة حسوب

الترقية إلى إصدارات React Native الجديدة

ستمنحك الترقية إلى إصدارات جديدة من React Native إمكانية الوصول إلى المزيد من واجهات برمجة التطبيقات (API)، والعروض وأدوات المطورين وغير ذلك من ميّزات. تتطلب الترقية بذل القليل من المجهود، لكنّ فريق React Native يعمل على تسهيل الأمر.

مشاريع Expo

تتطلب ترقية مشروع Expo الخاص بك إلى إصدار جديد من React Native تحديث إصدارات الحزم react-native و react و expo في ملف package.json في مشروعك. انظر هذه القائمة للتعرّف على الإصدارات المدعومة. ستحتاج أيضًا إلى تعيين نسخة sdkVersion الصحيحة في ملف app.json الخاص بك.

انظر تحديث Expo للحصول على معلومات محدثة حول ترقية مشروعك.

مشاريع React Native

لأنّ مشاريع React Native النموذجية تتكون أساسًا من مشروع Android ومشروع iOS ومشروع JavaScript، فإنّ الترقية قد تكون صعبة إلى حد ما. إليك ما تحتاج إلى القيام به للترقية من إصدار أقدم من React Native.

الترقية اعتمادا على Git

تأتي أداة React Native CLI مع أمر الترقية ‎‎upgrade‎‎ الذي يسمح بترقية الملفات المصدريّة بخطوة واحدة مع الحد الأدنى من التعارضات، وذلك بفضل مشروع rn-diff-purge.

1. تأكد من أن مشروعك يستخدم Git

ملاحظة: تنطبق هذه الخطوة فقط على المشاريع التي لا تستخدم Git. تخطّاها إذا كنت تستخدم Git.

رغم أن مشروعك لا يتطلّب إدارته بواسطة نظام إدارة النسخ Git، (إذ يمكنك استخدام Mercurial أو SVN أو لا شيء) إلّا أنّك بحاجة إلى تثبيت Git على نظامك لاستخدام الأمر ‎‎react-native upgrade‎‎. ينبغي على Git كذلك أن يكون متاحًا في متغيّر PATH الخاص بالنظام. إذا لم تكن تستخدم Git في مشروعك، فنفّذ التهيئة (init) والإضافة (add)، والإيداع (commit):

git init
git add .
git commit -m "upgrade RN"

يمكنك حذف مجلّد ‎‎.git‎‎ بعد الانتهاء من الترقيّة وحل التعارضات (conflicts).

2. نفّذ أمر الترقية

نفّذ الأمر التالي لبدء عملية الترقية إلى أحدث إصدار:

react-native upgrade

يمكنك تحديد إصدار React Native عن طريق تمرير مُعامل للأمر، على سبيل المثال، نفّذ الأمر التالي للترقية إلى الإصدار ‎‎0.59.0-rc.0‎‎:

react-native upgrade 0.59.0-rc.0

يُرقّى المشروع باستخدام ‎‎git apply‎‎ مع دمج ثلاثي الاتجاهات (‎3-way merge‎). لهذا السبب قد تحتاج إلى حل بعض التعارضات.

3. حل التعارضات

تتضمن الملفات المتعارضة علامات توضّح بوضوح من أين تأتي التغييرات. فمثلا:

13B07F951A680F5B00A75B9A /* Release */ = {
  isa = XCBuildConfiguration;
  buildSettings = {
    ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
<<<<<<< نحن
    CODE_SIGN_IDENTITY = "iPhone Developer";
    FRAMEWORK_SEARCH_PATHS = (
      "$(inherited)",
      "$(PROJECT_DIR)/HockeySDK.embeddedframework",
      "$(PROJECT_DIR)/HockeySDK-iOS/HockeySDK.embeddedframework",
    );
=======
    CURRENT_PROJECT_VERSION = 1;
>>>>>>> هُم
    HEADER_SEARCH_PATHS = (
      "$(inherited)",
      /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
      "$(SRCROOT)/../node_modules/react-native/React/**",
      "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
    );

هنا كلمة "نحن" تُمثّل شيفرتك أو شيفرة فريقك و"هم" تُمثّل "فريق تطوير React Native".

بديل

استخدم هذه الخطوات فقط في حالة فشل ما سبق.

1. ترقية اعتمادية ‎‎react-native‎‎

تحقّق من أحدث إصدار من حزمة react-native‎‎ في npm من هنا (أو استخدم الأمر ‎‎npm info react-native‎‎ ).

ثبّت الآن هذا الإصدار من ‎‎react-native‎‎ في مشروعك باستخدام ‎‎npm install --save‎‎ مع استبدال ‎‎X.Y‎‎ برقم النسخة التي تريد الترقية إليها:

$ npm install --save react-native@X.Y
# where X.Y is the semantic version you are upgrading to
npm WARN peerDependencies The peer dependency react@~R included from react-native...

إذا واجهك تحذير يشمل كلمة peerDependency، فعليك كذلك ترقية ‎‎react‎‎ عبر الأمر:

npm install --save react@R

مع استبدال ‎‎R‎‎ بالنسخة الجديدة من ‎‎react‎‎ اعتمادًا على التحذير أعلاه.

2. ترقية قوالب مشروعك

قد تحتوي حزمة npm الجديدة على تحديثات للملفات التي تُولَّد عادةً عند تنفيذ الأمر ‎‎react-native init‎‎، مثل مشاريع iOS وAndroid الفرعية.

يمكنك الرجوع إلى rn-diff-purge لمعرفة ما إذا كانت هناك تغييرات في ملفات قالب المشروع. في حال لم يكن هناك أي تغييرات، فأعِد ببساطة بناء المشروع وواصل التطوير. في حالة وجود تغييرات طفيفة، يمكنك تحديث المشروع يدويًا وإعادة البناء.

إذا كانت هناك تغييرات كبيرة، فنفّذ الأمر التالي في الطرفيّة للحصول عليها:

$ react-native upgrade

سيؤدي هذا إلى التحقق من ملفاتك مقابل أحدث قالب وتنفيذ ما يلي:

  • إذا وُجِدَ ملفّ جديد في القالب، فسيُنشَأ ببساطة.
  • إذا كان الملف الموجود في القالب مطابقًا لملفّك، فسيُتخطَّى هذا الملفّ.
  • إذا كان هناك ملف في مشروعك يختلف عن الملفّ الموجود في القالب الجديد، فسيُعرض عليك خيار الاحتفاظ بملفك أو الكتابة فوقه باستخدام نسخة القالب الجديد.

الترقية يدويا

تتطلب بعض الترقيات خطوات يدويّة، مثل الترقيّة من النسخة ‎‎0.28‎‎ إلى النسخة ‎‎0.29‎‎، أو من ‎‎0.56‎‎ إلى ‎‎0.57‎‎. تأكّد من مراجعة ملاحظات الإصدار عند الترقية لتتمكن من التعرّف على أي تغييرات يدوية قد يتطلبها مشروعك.

مصادر