إدارة الحزم باستخدام NPM
فهم NPM (مدير حزم Node)
NPM هو مدير الحزم الافتراضي لـ Node.js وأكبر سجل للبرمجيات في العالم. يسمح للمطورين بمشاركة واكتشاف واستخدام حزم الكود التي أنشأها المجتمع. NPM ضروري لتطوير Node.js الحديث، حيث يوفر الوصول إلى مئات الآلاف من الحزم القابلة لإعادة الاستخدام.
ما هي الحزمة؟
الحزمة هي قطعة من الكود قابلة لإعادة الاستخدام يمكن مشاركتها واستخدامها عبر مشاريع مختلفة. يمكن أن تتراوح الحزم من دوال بسيطة إلى أطر عمل معقدة مثل Express.js أو React. يجعل NPM من السهل تثبيت وتحديث وإدارة هذه الحزم في مشاريعك.
npm --version أو npm -v في الطرفية الخاصة بك.
تهيئة مشروع Node.js
يبدأ كل مشروع Node.js يستخدم NPM بملف package.json. يحتوي هذا الملف على معلومات وصفية حول مشروعك ويدير تبعياته.
إنشاء package.json
لإنشاء ملف package.json جديد، انتقل إلى دليل مشروعك وقم بتشغيل:
سيطالبك هذا الأمر بعدة أسئلة حول مشروعك (الاسم، الإصدار، الوصف، نقطة الدخول، إلخ). يمكنك الضغط على Enter لقبول القيم الافتراضية لأي سؤال.
التهيئة السريعة
لإنشاء ملف package.json بجميع القيم الافتراضية دون الإجابة على الأسئلة:
هذا ينشئ ملف package.json أساسي يمكنك تحريره لاحقًا:
تثبيت الحزم
يوفر NPM عدة طرق لتثبيت الحزم حسب احتياجاتك.
التثبيت المحلي
لتثبيت حزمة محليًا في مشروعك:
أو باستخدام الاختصار:
هذا الأمر:
- يقوم بتنزيل الحزمة من سجل NPM
- يثبتها في مجلد
node_modules - يضيفها إلى قسم
dependenciesفيpackage.json - ينشئ أو يحدث
package-lock.jsonلتثبيت إصدارات التبعيات
مثال: تثبيت Express
بعد التثبيت، سيتضمن package.json الخاص بك:
التثبيت العام
بعض الحزم مخصصة للتثبيت عالميًا، عادةً أدوات سطر الأوامر:
أمثلة على الحزم المثبتة عالميًا:
التبعيات مقابل تبعيات التطوير
يميز NPM بين نوعين من التبعيات بناءً على متى تكون مطلوبة.
التبعيات (Dependencies)
هذه هي الحزم المطلوبة لتشغيل تطبيقك في الإنتاج:
يتم إدراج هذه الحزم ضمن "dependencies" في package.json.
تبعيات التطوير (DevDependencies)
هذه هي الحزم المطلوبة فقط أثناء التطوير (أدوات الاختبار، أدوات البناء، أدوات التدقيق):
أو باستخدام الاختصار:
يتم إدراج هذه الحزم ضمن "devDependencies" في package.json:
npm install --production، مما يتخطى devDependencies ويقلل من وقت التثبيت والحجم.
فهم إصدار الدلالات (Semantic Versioning)
يستخدم NPM إصدار الدلالات (semver) لإدارة إصدارات الحزم. تتبع أرقام الإصدارات التنسيق: MAJOR.MINOR.PATCH
تنسيق رقم الإصدار
- MAJOR: تغييرات جذرية (تغييرات API غير متوافقة)
- MINOR: ميزات جديدة (متوافقة مع الإصدارات السابقة)
- PATCH: إصلاحات الأخطاء (متوافقة مع الإصدارات السابقة)
مثال: 4.18.2 يعني الإصدار الرئيسي 4، الإصدار الفرعي 18، إصدار التصحيح 2
رموز نطاق الإصدار
يستخدم NPM رموزًا خاصة لتحديد نطاقات الإصدارات المقبولة:
إدارة الحزم المثبتة
عرض الحزم المثبتة
لعرض جميع الحزم المثبتة محليًا:
لعرض الحزم من المستوى الأعلى فقط (بدون التبعيات):
لعرض الحزم المثبتة عالميًا:
تحديث الحزم
لتحديث جميع الحزم إلى أحدث إصداراتها المسموح بها (مع احترام semver):
لتحديث حزمة معينة:
للتحقق من الحزم القديمة:
إلغاء تثبيت الحزم
لإزالة حزمة:
هذا يزيل الحزمة من node_modules و package.json. الاختصار:
سكريبتات NPM
تسمح لك سكريبتات NPM بتعريف أوامر مخصصة في ملف package.json الخاص بك. هذه ميزة قوية لأتمتة المهام.
تعريف السكريبتات
يتم تعريف السكريبتات في قسم "scripts" من package.json:
تشغيل السكريبتات
لتشغيل سكريبت:
على سبيل المثال:
السكريبتات الخاصة
بعض أسماء السكريبتات لها معنى خاص ويمكن تشغيلها بدون run:
سكريبتات ما قبل وما بعد
يشغل NPM تلقائيًا سكريبتات pre و post إذا كانت موجودة:
تشغيل npm start سينفذ جميع السكريبتات الثلاثة بالترتيب.
--. على سبيل المثال: npm start -- --port=3000 يمرر --port=3000 إلى السكريبت الخاص بك.
فهم package-lock.json
يتم إنشاء ملف package-lock.json تلقائيًا عند تثبيت الحزم. يخدم عدة أغراض مهمة:
- إصدارات دقيقة: يسجل الإصدار الدقيق لكل حزمة مثبتة، بما في ذلك التبعيات
- الاتساق: يضمن تثبيت جميع أعضاء الفريق وبيئات النشر لإصدارات متطابقة
- تثبيتات أسرع: يمكن لـ NPM تخطي بعض خطوات الحل عندما يكون هذا الملف موجودًا
- الأمان: يتضمن تجزئات التكامل للتحقق من محتويات الحزمة
package-lock.json في التحكم في الإصدار. يضمن إنشاءات قابلة للتكرار عبر بيئات مختلفة.
NPX - منفذ حزم Node
NPX هو أداة تأتي مع NPM (الإصدار 5.2+) تسمح لك بتنفيذ الحزم دون تثبيتها عالميًا.
فوائد NPX
- تشغيل الحزم دون التثبيت العالمي
- استخدام أحدث إصدار من الحزمة دائمًا
- تنفيذ الحزم من عناوين URL البعيدة
- تشغيل إصدارات مختلفة من نفس الحزمة للاختبار
استخدام NPX
بدلاً من تثبيت حزمة عالميًا:
تشغيل الملفات الثنائية المحلية
يمكن لـ NPX أيضًا تشغيل الحزم المثبتة محليًا:
تحديد إصدارات الحزم
يمكنك تشغيل إصدارات معينة من الحزم:
نشر حزمك الخاصة
يسمح لك NPM بنشر حزمك الخاصة ليستخدمها الآخرون.
المتطلبات الأساسية
- إنشاء حساب NPM في npmjs.com
- تسجيل الدخول من سطر الأوامر:
إعداد حزمتك
تأكد من أن package.json الخاص بك يحتوي على الحقول المطلوبة:
النشر
لنشر حزمتك:
لتحديث حزمتك، قم بزيادة رقم الإصدار وانشر مرة أخرى:
أفضل الممارسات لإدارة الحزم
1. حافظ على التبعيات محدثة
تحقق بانتظام من التحديثات وقم بتثبيتها لإصلاح الثغرات الأمنية:
2. استخدم .npmignore
أنشئ ملف .npmignore لاستبعاد الملفات من حزمتك المنشورة:
3. حدد متطلبات المحرك
حدد إصدارات Node.js و NPM التي تتطلبها حزمتك:
4. استخدم ملفات القفل
قم دائمًا بإيداع package-lock.json لضمان تثبيتات متسقة.
5. التثبيتات النظيفة
لاستكشاف الأخطاء وإصلاحها، استخدم التثبيت النظيف الذي يتبع ملف القفل بدقة:
- قم بتهيئة مشروع جديد باستخدام
npm init -y - قم بتثبيت Express كتبعية
- قم بتثبيت Nodemon كتبعية تطوير
- أنشئ سكريبتات مخصصة: "start" (يعمل مع node) و "dev" (يعمل مع nodemon)
- اختبر كلا السكريبتين
- استخدم
npm list --depth=0لعرض حزمك - تحقق من الحزم القديمة باستخدام
npm outdated - جرب استخدام NPX لتشغيل حزمة دون تثبيتها:
npx cowsay Hello NPM!