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

السؤال

نشر

لقد أعتدت على استخدام 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...