npm: الأساسيات، مدير الحزم لـ React Native و Node.js

المؤلف: IT Sectr نُشر: 2026-02-13 وقت القراءة: 10 دق

npm (Node Package Manager) هو مدير الحزم القياسي لمنصة Node.js، المضمن في تثبيت Node.js. يدير npm تبعيات مشاريع JavaScript و TypeScript: يقوم بتثبيت المكتبات في node_modules، وتحديث إصدارات الحزم، وحل تعارضات الإصدارات. package.json هو ملف التكوين المركزي الذي يحتوي على البيانات الوصفية وقائمة التبعيات. npm Registry هو أكبر سجل للحزم. تعرف على المزيد في npm Registry.

النقاط الرئيسية

  • npm — مدير حزم Node.js القياسي، المضمن مع Node.js منذ الإصدار 0.6.3
  • package.json — ملف تكوين المشروع مع التبعيات والنصوص والبيانات الوصفية
  • npm install — الأمر الأساسي لتثبيت التبعيات من package.json في مجلد node_modules
  • package-lock.json — ملف تثبيت الإصدارات الدقيقة للتثبيتات القابلة للتكرار في جميع البيئات
  • npm ci — أمر CI/CD الذي يقوم بتثبيت الحزم بدقة من ملف القفل دون تحديثه

ما هو npm — مدير حزم Node.js؟

npm تم إنشاؤه في 2010 بواسطة Isaac Schlueter كحل لإدارة تبعيات Node.js. منذ 2014، تتم إدارة npm بواسطة npm, Inc.، التي استحوذت عليها Microsoft/GitHub في 2020. تتكون الأداة من جزأين: CLI (سطر الأوامر) لتثبيت وإدارة الحزم، و Registry — المستودع المركزي لجميع الوحدات المنشورة على registry.npmjs.org.

npm Registry هو أكبر سجل للحزم: أكثر من 2 مليون حمة وأكثر من 10 مليارات تحميل شهريًا. كل حزمة لها إصدار SemVer، ووصف، وتبعيات، وترخيص، ومؤلف. يتم نشر الحزمة الخاصة بك عبر npm publish. يدعم npm الحزم ذات النطاق للمؤسسات (@scope/package)، والسجلات الخاصة، وتدقيق الأمان المدمج.

Node.js الإصدار 18+ يتضمن npm 9+ مع أداء محسن، و workspaces للمستودعات الأحادية، وآلية تبعيات نظيرة معاد تصميمها. يغطي نظام npm البيئي JavaScript من جانب الخادم، والواجهة الأمامية (React، Vue، Angular)، وتطوير الأجهزة المحمولة (React Native)، وأدوات البناء (Webpack، Vite)، والأدوات المساعدة CLI. npm هو القناة الرئيسية لتوزيع مكتبات JavaScript.

الميزات الرئيسية لـ npm

npm install — الأمر الرئيسي الذي يقرأ package.json و package-lock.json لتثبيت جميع التبعيات في node_modules. في التشغيل الأول، يقوم npm بحساب رسم بياني للتبعيات، وحل تعارضات الإصدارات، وإنشاء package-lock.json. الأمر npm install <package> يثبت حزمة معينة؛ العلم --save-dev يضيفها إلى devDependencies، و --global يثبتها عالميًا.

npx — مشغل الحزم المضمن في npm منذ الإصدار 5.2. يسمح npx بتشغيل أدوات CLI بدون تثبيت عالمي: npx react-native init أو npx create-react-app my-app. يقوم npx بتنزيل الحزمة إلى ذاكرة تخزين مؤقتة مؤقتة، ويشغلها، وينظفها بعد الانتهاء. npx مفيد أيضًا لتشغيل إصدارات معينة من الأدوات.

npm audit يمسح شجرة التبعيات بحثًا عن الثغرات الأمنية المعروفة من قاعدة بيانات npm. يخرج الأمر تقريرًا بمستويات الخطورة (خطير، عالي، متوسط) ويوصي بـ npm audit fix لتحديث الحزم الضعيفة تلقائيًا. npm cache يخزن الحزم التي تم تنزيلها محليًا. npm cache clean --force ينظف ذاكرة التخزين المؤقت عند حدوث مشاكل في التثبيت. npm outdated يعرض الحزم القديمة.

bash
# أوامر npm الأساسية
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# التشغيل بدون تثبيت عالمي
$ npx react-native init MyApp
# تدقيق الأمان
$ npm audit --fix

هيكل package.json وإدارة التبعيات

package.json هو ملف JSON في جذر المشروع يصف بياناته الوصفية وتبعياته وتكوينه. الحقول الإلزامية: name (اسم الحزمة الفريد) و version (إصدار SemVer، على سبيل المثال 1.0.0). يتم إنشاء الملف باستخدام npm init -y للتهيئة السريعة أو يدويًا.

Semantic Versioning (SemVer) هو معيار إصدار بتنسيق MAJOR.MINOR.PATCH. يتغير الإصدار الرئيسي مع تغييرات API غير المتوافقة، والثانوي عند إضافة وظائف (متوافق مع الإصدارات السابقة)، والتصحيحي عند إصلاح الأخطاء. الرمز ^ قبل الإصدار يسمح بتحديثات ثانوية وتصحيحية، بينما ~ يسمح فقط بتحديثات تصحيحية.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
الحقلالغرضقيمة مثال
scriptsأوامر التشغيل لـ npm run"start": "node index.js"
dependenciesتبعيات الإنتاج للتطبيق"react": "^18.3.0"
devDependenciesأدوات التطوير والاختبار"jest": "^29.7.0"
peerDependenciesتبعيات المضيف للمكتبات"react": ">=17.0.0"
enginesمتطلبات إصدار Node.js{"node": ">=18.0.0"}

npm في تطوير React Native

مشاريع React Native تستخدم npm بنشاط لإدارة التبعيات. تشمل المجموعة القياسية react و react-native ومكتبات التنقل (React Navigation) وطلبات HTTP (axios) وإدارة الحالة (Redux، Zustand) ومكونات واجهة المستخدم. يتيح npm تثبيت آلاف الحزم المتوافقة من السجل.

npx pod-install — أمر إلزامي بعد تثبيت الوحدات الأصلية في React Native لنظام iOS. يقوم npm تلقائيًا بإنشاء Podfile.lock استنادًا إلى package-lock.json. في مشاريع Expo، يُستخدم expo install بدلاً من npm install، لأنه يختار الإصدارات المتوافقة مع إصدار Expo SDK الحالي.

تعارضات الإصدارات مشكلة شائعة في React Native: react-native-reanimated و react-native-gesture-handler و react-native-safe-area-context تتطلب إصدارات متوافقة. الحل هو تحديث جميع الحزم إلى أحدث الإصدارات المتوافقة أو استخدام --legacy-peer-deps. package-lock.json ضروري للوحدات الأصلية التي يتم تجميعها عبر CocoaPods و Gradle.

مقارنة npm مع المديرين البديلين

npm هو مدير الحزم القياسي المضمن مع Node.js. البدائل الرئيسية: yarn (تم إنشاؤه بواسطة Facebook في 2016) و pnpm (سريع، مع روابط صلبة). منذ npm 5، الفرق في السرعة والوظائف بين npm و yarn ضئيل. npm 7+ أضاف workspaces، مما يجعله تنافسيًا للمستودعات الأحادية.

الخاصيةnpmyarnpnpm
سنة الإنشاء201020162017
ملف القفلpackage-lock.jsonyarn.lockpnpm-lock.yaml
التثبيتتسلسلي (npm 5+)متوازيمتوازي
مساحة القرصقياسيقياسيأدنى (روابط)
Workspacesنعم (npm 7+)نعمنعم
Plug'n'Playلانعملا

وفقًا لـ State of JS 2025: 62% من المطورين يستخدمون npm، و 35% يستخدمون yarn (معظمهم مشاريع قديمة وعشاق PnP)، و 3% يستخدمون pnpm. لمشاريع React Native، كلتا الأداتين متكافئتان، لكن npm أكثر شيوعًا في المشاريع التي تستخدم Expo SDK 50+ وتهيئات React Native الجديدة.

yarn يحتفظ بميزته في المستودعات الأحادية الكبيرة جدًا (100+ حزمة) بفضل تنفيذه الأكثر نضجًا لـ workspaces و Plug'n'Play. pnpm يتفوق في توفير مساحة القرص عبر الروابط الصلبة إلى مخزن عام. اختيار المدير يعتمد على تفضيلات الفريق والبنية التحتية.

الأسئلة الشائعة

ما الفرق بين npm install و npm ci؟

npm install يقوم بتحديث package-lock.json وقد يقوم بتثبيت إصدارات ثانوية جديدة ضمن النطاق الدلالي. npm ci (Clean Install) يحذف node_modules ويقوم بتثبيت الحزم بدقة من package-lock.json دون تحديثه. npm ci أسرع، ويُستخدم في CI/CD ويضمن بيئة متطابقة على جميع الأجهزة. إذا كان package-lock.json مفقودًا، يرمي npm ci خطأ.

كيفية إصلاح تعارضات التبعيات النظيرة في npm؟

منذ npm 7، تتسبب تعارضات التبعيات النظيرة في أخطاء البناء. الحلول: تحديث جميع الحزم إلى إصدارات متوافقة عبر npm update، أو استخدام العلم --legacy-peer-deps لوضع npm 6، أو إضافة قسم overrides في package.json لفرض إصدار حزمة معينة. الخيار الأفضل هو تحديث التبعيات إلى إصدارات متوافقة.

ما هو npm audit ولماذا هو مطلوب؟

npm audit يمسح شجرة التبعيات بحثًا عن الثغرات الأمنية المعروفة من قاعدة بيانات npm Security Advisory. يخرج الأمر تقريرًا بمستوى الخطورة (حرج، عالٍ، متوسط، منخفض) ويوصي بـ npm audit fix لتحديث الحزم الضعيفة تلقائيًا إلى إصدارات آمنة. تشغيل npm audit بانتظام هو ممارسة أمان أساسية لمشاريع JavaScript.

كيف تبسط workspaces في npm المستودعات الأحادية؟

npm workspaces تسمح بإدارة حزم متعددة في مستودع واحد. أضف الحقل "workspaces": ["packages/*"] إلى package.json الجذر. الفوائد: تثبيت واحد لجميع التبعيات في node_modules مشتركة، روابط رمزية تلقائية بين الحزم المحلية، تشغيل النصوص لجميع الحزم من الجذر، وإزالة تكرار الإصدارات.

لماذا يجب إرسال package-lock.json إلى المستودع؟

package-lock.json يثبت الإصدارات الدقيقة لجميع التبعيات وحزمها الانتقالية. بدونه، قد يحصل مطورون مختلفون وخوادم CI على إصدارات مختلفة من المكتبات ضمن النطاق الدلالي، مما يؤدي إلى أخطاء «يعمل على جهازي». إرسال ملف القفل يضمن بنيات قابلة للتكرار وسلوكًا متطابقًا في جميع البيئات.

الخلاصة

  • npm — مدير حزم Node.js القياسي، المضمن مع Node.js منذ الإصدار 0.6.3
  • package.json — ملف تكوين المشروع مع التبعيات والنصوص والبيانات الوصفية
  • npm install — تثبيت التبعيات، npm ci — تثبيت بدقة من package-lock.json لـ CI/CD
  • package-lock.json — تثبيت الإصدارات الدقيقة، إلزامي للبنيات القابلة للتكرار
  • npm Registry — أكبر سجل للحزم مع أكثر من 2 مليون وحدة
  • npm audit — فحص أمان التبعيات مع إصلاح تلقائي للثغرات
  • npm workspaces — آلية إدارة المستودعات الأحادية مع node_modules مشتركة

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا