إعداد pnpm كمدير حزم افتراضي
تعرف على pnpm وكيفية جعله مدير الحزم الافتراضي لمشاريعك
ما هو pnpm؟
pnpm (اختصار لـ Performant npm) هو مدير حزم بديل لـ npm يتميز بالسرعة والكفاءة في استخدام مساحة القرص. تم تطويره ليحل مشاكل الأداء والمساحة التي تواجه npm التقليدي.
سرعة فائقة
أسرع بـ 2x من npm في تثبيت الحزم
توفير المساحة
يوفر حتى 70% من مساحة القرص
أمان أعلى
يمنع الوصول غير المصرح به للحزم
Monorepos مدمج
دعم ممتاز للمشاريع متعددة الحزم
مقارنة الأداء
عند تثبيت React و Angular و Vue معاً:
- npm: 51 ثانية، 438 MB
- yarn: 31 ثانية, 404 MB
- pnpm: 14 ثانية، 162 MB ⚡
تثبيت pnpm باستخدام Volta
أفضل طريقة لتثبيت pnpm هي استخدام Volta التي ثبتناها في الدرس السابق:
هذا الأمر سيقوم بـ:
- تحميل أحدث نسخة مستقرة من pnpm
- تثبيتها وإعدادها تلقائياً
- ربطها مع Volta لإدارة أفضل
- جعلها متاحة في جميع المشاريع
التحقق من التثبيت:
يجب أن ترى رقم النسخة مثل: 8.15.0 أو أحدث
لماذا Volta لتثبيت pnpm؟
استخدام Volta لتثبيت pnpm يضمن التوافق بين نسخ Node.js و pnpm في مشاريعك المختلفة، ويسهل عملية التحديث والإدارة.
تعيين pnpm كمدير حزم افتراضي
1. تفعيل Corepack (موصى به):
Corepack هي أداة مدمجة في Node.js v16.13+ تسمح بإدارة مديري الحزم. لتفعيلها:
2. إنشاء Alias (اختياري):
لجعل npm يشير إلى pnpm تلقائياً، أضف هذه الأسطر:
على Windows (PowerShell):
على macOS/Linux (Bash/Zsh):
ملاحظة مهمة
إنشاء Alias يجعل كل أوامر npm تستخدم pnpm، لكن قد يسبب ارتباكاً في بعض المشاريع القديمة. استخدمه فقط إذا كنت متأكداً من رغبتك في استخدام pnpm حصرياً.
أوامر pnpm الأساسية
pnpm متوافق مع أوامر npm، لكن بأداء أفضل:
| الأمر | الوصف |
|---|---|
pnpm init |
إنشاء مشروع Node.js جديد |
pnpm install or pnpm i |
تثبيت جميع التبعيات |
pnpm add <package> |
إضافة حزمة جديدة |
pnpm add -D <package> |
إضافة حزمة تطوير |
pnpm remove <package> |
حذف حزمة |
pnpm update |
تحديث الحزم |
pnpm run <script> |
تشغيل سكربت |
pnpm list |
عرض الحزم المثبتة |
مثال عملي - إنشاء مشروع جديد:
مميزات pnpm الفريدة
1. Content-addressable Storage:
pnpm يحفظ نسخة واحدة فقط من كل حزمة على جهازك، ويستخدم symlinks للربط. هذا يعني:
- تثبيت React مرة واحدة يكفي لجميع المشاريع
- توفير هائل في المساحة (قد يصل لـ GBs)
- تثبيت أسرع للمشاريع الجديدة
مثال توضيحي
تخيل أن لديك 10 مشاريع تستخدم React v18.2.0:
- npm: سيحفظ 10 نسخ كاملة من React (حوالي 800 MB)
- pnpm: سيحفظ نسخة واحدة فقط (80 MB) ويربطها للمشاريع الـ10 ⚡
2. Strict node_modules:
pnpm يمنع الوصول للحزم غير المدرجة في package.json، مما يمنع الأخطاء الخفية:
3. Workspace Support:
دعم ممتاز للمشاريع الكبيرة (Monorepos):
الانتقال من npm إلى pnpm
إذا كان لديك مشروع موجود بالفعل يستخدم npm:
الخطوات:
- احذف node_modules القديم:
- ثبت الحزم باستخدام pnpm:
- تحديث السكربتات (إن وجدت):
نصيحة
يمكنك استخدام pnpm import لتحويل package-lock.json إلى pnpm-lock.yaml تلقائياً!
أوامر pnpm المتقدمة
| الأمر | الوصف |
|---|---|
pnpm store status |
عرض حالة مخزن الحزم |
pnpm store prune |
حذف الحزم غير المستخدمة |
pnpm outdated |
عرض الحزم القديمة |
pnpm why <package> |
معرفة لماذا تم تثبيت حزمة |
pnpm audit |
فحص الثغرات الأمنية |
pnpm dlx <package> |
تشغيل حزمة بدون تثبيت (مثل npx) |
مثال: فحص المخزن:
إعدادات pnpm
يمكنك تخصيص pnpm عبر ملف .npmrc في مجلد المشروع أو المجلد الرئيسي:
shamefully-hoist
إذا واجهت مشاكل مع بعض المكتبات القديمة (مثل عدم إيجاد تبعيات)، جرب تفعيل shamefully-hoist=true. لكن هذا يقلل من فوائد pnpm الأمنية قليلاً.
الخلاصة
- pnpm مدير حزم أسرع وأكفأ من npm
- يوفر مساحة القرص بشكل كبير (حتى 70%)
- يمكن تثبيته بسهولة باستخدام:
volta install pnpm - متوافق تماماً مع أوامر npm
- يوفر أماناً أعلى بمنع الوصول للتبعيات غير المصرح بها
- مثالي للمشاريع الكبيرة والـ Monorepos