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

ما الفرق بين devDependencies و peerDependencies في node.js

Bassel Jhr

السؤال

لقد أعتدت على استخدام npm بشكل مباشر عند تحميل أي حزمة ولكن لاحظت أنه في بعض الأحيان تتطلب بعض الحزم تحميلها من خلال الأمر --save-dev وبالتالي تظهر ضمن قسم devDependencies.

لقد قرأت في التوثيق الرسمي ووجدت أيضاً نمط آخر وهو peer ولكن لم أجد شرح كافي عن استخدامات أنماط الحزم الموجودة: dependencies و dev dependencies و peer dependencies. ما هي الفروقات الأساسية فيما بينها؟ وماهي استعمالات كل منها؟

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

Recommended Posts

  • 1

لنقم بتناول الأمر بشكل عام على هذا النحو : 

  • الـ devDependencies :

هي مجموع التبعيات و الحزم المطلوبة للتشغيل على بيئة التطوير , أي تلك التي يتم إستعمالها فقط أثناء التطوير أو الإصدار ، على سبيل المثال : الحزم المستعملة في اختبارات الوحدة . مثل حزمة jest في تطبيقات الـ node , react , angular و الـ vueJS , عناصر و حزم webpack  . بحيث تشكل مجموع الأدوات التي تساعدك على إدارة كيفية تطوير التطبيق لديك .
هاته الحزم يتم تثبيتها عن طريق مدير الحزم npm مثلا بإضافة الخيار save-dev-- : 

npm install pakcageName --save-dev
  • الـ Dependencies :

و هي مجموع التبعيات و الحزم التي يحتاجها مشروعك ليكون قادرًا على العمل في بيئة الإنتاج .

على سبيل المثال : الحزم المستعملة في عرض أو تنسيق أو تفاعلية جزء من أجزاء الصفحة , فلو احتجنا إلى حزمة للحصول على اليوم و الشهر . فسنجد أننا نقوم مثلا باستيراد {getDate} من الحزمة "date-fns" في مكون ما  , و بالتالي فإنه بدون هذه الحزمة لن يعمل كودنا . 

هاته الحزم يتم تثبيتها عن طريق مدير الحزم npm مثلا بدون إضافة أي خيار : 

npm install myPackage
  • الـ PeerDependencies :

هي مجموع الحزم التي تحتاجها حزمة ما لكي تشتغل بشكل طبيعي , و نادرا ما يتم التعامل مع هاته التبعيات و الحزم . و يقصد بها أي حزمة B تتطلبه حزمة معينة A ما ولكنها لا تشمله مع نفسه عند تثبيته .

على سبيل المثال : حزمة popper.js مع بوتستراب , فهي حزمة يستعملها Bootstrap 4 لإظهار النوافذ المنبثقة و بعض التأثيرات و التفاعليات في بوتستراب , و لكن بوتستراب لا يتضمنها عند التثبيت و قد نغفل في كثير من الحالات عن تثبيتها فتسبب بعض المشاكل من مثل : 

مثال 2 : 

 

 . يطلق هنا على popper.js و مثلها من الحزم لفظ peer dependecies لـ bootstrap . 

يمكن نمذجة طريقة التعامل معها عن طريق مدير الحزم npm كالتالي :

   ./node_modules/
                 |
                 |
                 |
                 +- devDependency
                 |
                 |
                 |
                 |
                 +- dependency/node_modules/
                 |                          |
                 |                          +- peerDependency-1/
                 |
                 |
                 +- dependency
                 |
                 |
                 |
                 |
                 |
                 +- devDependency/node_modules/
                                            |
                                            +- peerDependency-2/

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

قد لا يختلف الأمر كثيرا مع بيئات و لغات مختلفة , كما قد تختلف طريقة التعامل مع كل منها مع مدراء الحزم من مثل npm , composer , yarn , pip . سواء في أسماءها أو اللواحق أو الخيارات التي إضافتها لتحديد نوع الحزمة أو التبعية , أو ربما في طريقة تنسيق بنية ملفات الحزم و التبعيات أو أيضا في ملف مدير الحزمة (مثل composer.json و package.json) . و لكن يبقى منطقها و تقسيمها سواءا مهما اختلف كل ذلك .

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...