npm هو مدير الحزم الافتراضي لـ Node.js. قام Facebook منذ فترة طويلة بتطوير حل بديل لإدارة الحزم يسمى Yarn . يبدو أن الغزل يختفي ببطء من النصوص التمهيدية لـ GitHub باعتباره الحل الافتراضي، وتُظهر الإحصائيات الموجودة على الموقع الرسمي أنه يتم تنفيذ جزء صغير فقط من عمليات تثبيت الحزم باستخدام Yarn. ومع ذلك، فإن الأمر يستحق النظر خارج الصندوق.
يتوافق Yarn تمامًا مع ملفات package.json الموجودة، لذا يمكنك استخدام كلا الحلين بسهولة في مشاريعك الحالية. تختلف أوامر الحلين اختلافًا طفيفًا فقط. فيما يلي مقارنة لأهم الأوامر.:
| وصف | npm | غزل |
| التهيئة | الحرف الأول npm | الحرف الأول |
| تحديث | تثبيت npm -g npm | التحديث الذاتي للغزل |
| ثبت المجموعة | تثبيت npm - حفظ [الاسم] | إضافة الغزل [الاسم] |
| ثبت المجموعة | تثبيت npm - حفظ ديف [الاسم] | إضافة الغزل --ديف [الاسم] |
| تثبيت الحزمة عالميًا | npm install -g [name] | إضافة الغزل العالمي [اسم] |
| قم بتثبيت كافة الحزم | تثبيت npm | تثبيت الغزل |
| قم بتحديث كافة الحزم | تحديث npm | ترقية الغزل |
| حزمة إلغاء التثبيت | npm إزالة [الاسم] | إزالة الغزل [الاسم] |
بدأ الغزل بهدف حل بعض نقاط الضعف في npm. الفرق الأكثر وضوحًا هو الأداء العالي: من خلال عمليات التثبيت المتزايدة وتعدد مؤشرات الترابط وأحدث ميزة قاتلة Plug'n'Play (PNP)، يزداد الأداء بشكل كبير. يرفض Plug'n'Play فكرة إنشاء مجلدات العقدة المستندة إلى المشروع، والتي غالبًا ما يمكن أن تنمو إلى ارتفاعات فلكية في عدد الملفات. يمكنك معرفة المزيد حول هذا الأمر في التقرير الرسمي لـ Plug'n'Play . نقوم بتثبيت eslint مرة واحدة باستخدام npm ثم باستخدام الخيوط مع تسخين ذاكرة التخزين المؤقت في كل حالة لجعل الفرق في السرعة واضحًا (6x!):

