اذهب إلى المحتوى
  • 0

تثبيت حزم ويب باك وتعارض الحزم وكيفية استخدامها في مشاريع أخرى

Amen Ramadan

السؤال

عند إضافة حزّم ويب باك الى المشروع وتثبيتها من موجه الأوامر ..

اين يتم تثبيت هذه الحزم بالضبط ؟ 

هل يمكنني استخدامها في مشروع اخر دون الحاجة لاعادة كتابة امر التثبيت ؟ 

وما هي تداعيات تعارض الحزم ؟

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
بتاريخ منذ ساعة مضت قال Amen Ramadan:

اين يتم تثبيت هذه الحزم بالضبط ؟ 

يتم تثبيتها في ملف الـ node_modules

بتاريخ منذ ساعة مضت قال Amen Ramadan:

هل يمكنني استخدامها في مشروع اخر دون الحاجة لاعادة كتابة امر التثبيت ؟ 

نعم ولكن يجب ان تنسخ ملف الـ node_modules وملف الـ package.json وملف الـ package-lock.json إلى المشروع الجديد.

بتاريخ منذ ساعة مضت قال Amen Ramadan:

وما هي تداعيات تعارض الحزم ؟

هذا يعتمد على الحزمة التي تسبب التعارض، حيث قد لا يسبب التعارض أي مشكلة أو قد يسبب توقف التطبيق بالكامل.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

بخصوص تعارض الحزم فهى تحدث عندما يتعارض تثبيت حزمتين أو أكثر في نفس المشروع، وهذا النوع من المشاكل قد يؤدي إلى توقف تشغيل التطبيق بالكامل أو إلى أخطاء في وظائف محددة من التطبيق.

ولحل مشكلة تعارض الحزم، يجب القيام بعدة خطوات:

الخطوة الأولى هي تحديد الحزم التي تسبب التعارض والتأكد من أنها تستخدم إصدارًا متوافقًا مع الحزم الأخرى التي يعتمد عليها التطبيق. يمكن تحديد الحزم المتعارضة باستخدام أدوات إدارة الحزم مثل npm-check و npm ls.

npm-check و npm ls هما أوامر في واجهة سطر الأوامر لإدارة حزم npm والتحقق من حالة الحزم المثبتة في المشروع وتحديد التعارضات.

فالأمر npm-check يقوم بإظهار حالة الحزم المثبتة ويسمح بتحديد الحزم التي تحتاج إلى التحديث أو حذفها.

أما الأمر npm ls فيقوم بإظهار قائمة بكافة الحزم المثبتة بما فيها الإصدارات والتعليقات والتبعيات بين الحزم لتحديد التعارضات.

الخطوة التالية هي تحديد الخطأ الذي يتم إصداره من التطبيق عند تشغيله، وهذا يتطلب فحص ملفات السجلات أو استخدام أدوات تصحيح الأخطاء مثل debugger أو console.log.

بعد تحديد الحزم المتعارضة والخطأ الناتج عنه، يمكن اتخاذ إحدى الخطوات التالية:

  • تحديث إصدارات الحزم المتعارضة إلى إصدارات متوافقة مع بعضها البعض.
  • حذف الحزم المتعارضة واستخدام حزم بديلة.
  • إجراء التغييرات اللازمة في التطبيق لتجنب تعارض الحزم، وهذا يمكن أن يتطلب تغيير كود التطبيق.

والحل الأسهل هو  استخدام الأمر npm install --legacy-peer-deps لحل مشكلة تعارض الحزم، فهو يستخدم خيار --legacy-peer-deps لتمكين npm من تثبيت الحزم المتعارضة كما كان يفعل في إصدارات سابقة، حيث تم تغيير سلوكية تثبيت الحزم المتعارضة في إصدارات npm الأحدث.

ومع ذلك، ينبغي استخدام هذا الأمر بحذر، حيث أنه يمكن أن يؤدي إلى تثبيت إصدارات قديمة من الحزم وهذا قد يؤدي إلى مشاكل أخرى، أي الأفضل هو استخدام حزم متوافقة، لكن في حال كنت تعمل على مشروع للتدريب أو تعلم تقنية جديدة فلا مشكلة في استخدامه.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يفرق  دوما بين ثلاث أنواع من الحزم والاعتماديات في  node هي كالتالي:

  • الـ devDependencies : هي مجموع التبعيات و الحزم المطلوبة للتشغيل على بيئة التطوير، أي تلك التي يتم إستعمالها فقط أثناء التطوير أو الإصدار. بحيث تشكل مجموع الأدوات التي تساعدك على إدارة كيفية تطوير التطبيق لديك .
  • الـ Dependencies : و هي مجموع التبعيات و الحزم التي يحتاجها مشروعك ليكون قادرًا على العمل في بيئة الإنتاج .
  • الـ PeerDependencies : هي مجموع الحزم التي تحتاجها حزمة ما لكي تشتغل بشكل طبيعي، و نادرا ما يتم التعامل مع هاته التبعيات و الحزم. و يقصد بها أي حزمة B تتطلبه حزمة معينة A ما ولكنها لا تشمله مع نفسه عند تثبيته.

كما يوجد أيضا : الـ bundledDependencies و الـ OptionalDependencies.

التعارض الذي يحدث في الغالب هو بسبب تحديث التبعية او تبعية التطوير الى اصدار معين، مع عدم تواؤم اصدار الحزمة التابعة peerDep مع اصدارها. لنقل مثلا ان الحزمة A تتبع الحزمة B وتعتبرر peer dependency لها، وفي وقت ما تم تحديث اصدار A الى 1.1 ولم يتم تحديث اصدار B. عند محاولة تثبيت B يتم اخبارنا ان هنالك تعارضا فالحزمة B تتطلب الاصدار 1.0 من الحزمة A. وهكذا يتم الأمر باختصار. 

لتلافي مثل هاته المشكلة، نقوم بجبر التثبيت عن طريق اضافة الخيار force-- او تمكين تثبيت الحزم المتعارضة عن طريق الخيار legacy-peer-deps-- الى امر التثبيت.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...