node.js - update - npm شرح




ما الفرق بين التبعيات و devDependencies و peerDependencies في ملف npm package.json؟ (6)

هذه الوثائق يجيب على سؤالي سيئة للغاية. لم أفهم تلك التفسيرات. يمكن للشخص أن يقول في كلمات أبسط؟ ربما مع أمثلة إذا كان من الصعب اختيار كلمات بسيطة؟


أود أن أضيف للإجابة وجهة نظري حول تفسيرات هذه التبعيات

  • يتم استخدام dependencies للاستخدام المباشر في التعليمات البرمجية الخاصة بك ، الأشياء التي عادة ما ينتهي بها الأمر في رمز الإنتاج ، أو أجزاء من الكود
  • يتم استخدام devDependencies في عملية devDependencies ، وهي الأدوات التي تساعدك على إدارة كيفية انتهاء رمز النهاية ، ووحدات اختبار الطرف الثالث (مثل عناصر حزمة الويب)

إذا كنت لا ترغب في تثبيت devDependencies يمكنك ببساطة استخدام npm install --production


على سبيل المثال ، عادةً ما يكون mocha عبارة عن devDependency ، حيث أن الاختبار ليس ضروريًا في الإنتاج ، في حين أن التعبير عن ذلك سيكون تبعية.


لحفظ حزمة إلى package.json كاعتمادات لشركة Dev :

npm install "$package" --save-dev

عند تشغيل npm install ، سيقوم بتثبيت كل من devDependencies dependencies . لتجنب تثبيت devDependencies تشغيل:

npm install --production

هناك بعض الوحدات والطرود الضرورية فقط للتنمية ، والتي ليست ضرورية في الإنتاج. كما تقول إنها في documentation :

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


تبعيات
التبعيات التي يحتاجها مشروعك للتشغيل ، مثل المكتبة التي توفر الوظائف التي تتصل بها من شفرتك.
يتم تثبيتها بشكل عابر (إذا كانت A تعتمد على B وتعتمد على C ، فستقوم تثبيت npm على A بتثبيت B و C).
مثال: lodash: مشروعك يستدعي بعض وظائف lodash.

devDependencies
التبعيات التي تحتاج إليها فقط أثناء التطوير أو التحرير ، مثل المجمعين الذين يأخذون شفرتك وتجميعها في javascript أو أطر الاختبار أو مولدات الوثائق.
لم يتم تثبيتها بشكل عابر (إذا كانت A تعتمد على B-dev تعتمد على C ، فسيتم تثبيت npm على A فقط B).
مثال: grunt: يستخدم مشروعك grunt لبناء نفسه.

peerDependencies
التبعيات التي يربطها مشروعك أو يتم تعديلها في المشروع الأصل ، عادة ما تكون مكونًا إضافيًا لبعض المكتبات أو الأدوات الأخرى. الغرض منه هو فقط إجراء فحص ، والتأكد من أن المشروع الرئيسي (المشروع الذي يعتمد على مشروعك) يعتمد على المشروع الذي تدخله. لذا ، إذا قمت بإنشاء مكون C يضيف وظائف للمكتبة B ، فسيحتاج شخص ما يقوم بإنشاء مشروع A إلى الاعتماد على B إذا كان لديه اعتماد على C.
لم يتم تثبيتها (ما لم يكن npm <3) ، يتم فحصها فقط.
مثال: grunt: مشروعك يضيف وظائف للنخر ويمكن استخدامه فقط في المشروعات التي تستخدم grunt.

تشرح هذه الوثائق تبعيات النظراء بشكل جيد: https://nodejs.org/en/blog/npm/peer-dependencies/

أيضًا ، تم تحسين وثائق npm بمرور الوقت ، ولديها الآن تفسيرات أفضل لأنواع مختلفة من التبعيات: https://github.com/npm/npm/blob/master/doc/files/package.json.md#devdependencies





npm