مقدمة إلى مدير حزم npm
مقدمة إلى npm
npm
هو مدير الحزم القياسي لـ Node.js.
في سبتمبر 2022، تم الإبلاغ عن أكثر من 2.1 مليون حزمة مدرجة في سجل npm، مما يجعله أكبر مستودع لرموز لغة واحدة على الأرض، ويمكنك التأكد من وجود حزمة لـ (كل شيء تقريبًا!).
بدأ كوسيلة لتحميل وإدارة تبعيات حزم Node.js، لكنه أصبح منذ ذلك الحين أداة تُستخدم أيضًا في واجهة JavaScript الأمامية.
TIP
Yarn
و pnpm
بدائل لواجهة npm. يمكنك التحقق منها أيضًا.
الحزم
تثبيت جميع التبعيات
يمكنك تثبيت جميع التبعيات المدرجة في ملف package.json
الخاص بك عن طريق تشغيل:
npm install
سوف يقوم بتثبيت كل ما يحتاجه المشروع، في مجلد node_modules
، وإنشاءه إذا لم يكن موجودًا بالفعل.
تثبيت حزمة واحدة
يمكنك تثبيت حزمة واحدة عن طريق تشغيل:
npm install <package-name>
علاوة على ذلك، منذ npm 5، تضيف هذه الأوامر <package-name>
إلى قسم التبعيات في ملف package.json
. قبل الإصدار 5، كان عليك إضافة علم --save
.
غالبًا ما سترى المزيد من الأعلام المضافة إلى هذا الأمر:
--save-dev
(أو-D
) الذي يضيف الحزمة إلى قسمdevDependencies
من ملفpackage.json
.--no-save
الذي يمنع حفظ الحزمة في ملفpackage.json
.--no-optional
الذي يمنع تثبيت التبعيات الاختيارية.--save-optional
الذي يضيف الحزمة إلى قسمoptionalDependencies
من ملفpackage.json
.
يمكن أيضًا استخدام اختصارات الأعلام:
-S
:--save
-D
:--save-dev
-O
:--save-optional
الفرق بين devDependencies
و dependencies
هو أن الأول يحتوي على أدوات التطوير، مثل مكتبة الاختبار، بينما يتم تجميع الأخير مع التطبيق في الإنتاج.
أما بالنسبة إلى optionalDependencies
، فإن الفرق هو أن فشل بناء التبعية لن يتسبب في فشل التثبيت. لكن من مسؤولية برنامجك التعامل مع عدم وجود التبعية. اقرأ المزيد حول التبعيات الاختيارية.
تحديث الحزم
يُسهّل تحديث الحزم أيضًا عن طريق تشغيل
npm update
سيؤدي هذا إلى تحديث جميع التبعيات إلى أحدث إصدار لها.
يمكنك أيضًا تحديد حزمة واحدة لتحديثها:
npm update <package-name>
إزالة الحزم
لإزالة حزمة، يمكنك تشغيل:
npm uninstall <package-name>
إصدار الإصدارات
بالإضافة إلى التنزيلات العادية، يدير npm
أيضًا إصدار الإصدارات، بحيث يمكنك تحديد أي إصدار محدد من الحزمة، أو طلب إصدار أعلى أو أقل مما تحتاجه.
في كثير من الأحيان ستجد أن المكتبة متوافقة فقط مع الإصدار الرئيسي لمكتبة أخرى.
أو أن خطأ في أحدث إصدار من المكتبة، لم يتم إصلاحه بعد، يتسبب في مشكلة.
إن تحديد إصدار محدد من المكتبة يساعد أيضًا في الحفاظ على استخدام الجميع لنفس الإصدار الدقيق من الحزمة، بحيث يعمل الفريق بأكمله بنفس الإصدار حتى يتم تحديث ملف package.json
.
في جميع هذه الحالات، تساعد إصدار الإصدارات كثيرًا، ويتبع npm
معيار إصدار الإصدارات الدلالي (semver).
يمكنك تثبيت إصدار محدد من الحزمة، عن طريق تشغيل
npm install <package-name>@<version>
يمكنك أيضًا تثبيت أحدث إصدار من الحزمة، عن طريق تشغيل
npm install <package-name>@latest
تشغيل المهام
يدعم ملف package.json تنسيقًا لتحديد مهام سطر الأوامر التي يمكن تشغيلها باستخدام
npm run <task-name>
على سبيل المثال، إذا كان لديك ملف package.json ذو المحتوى التالي:
{
"scripts": {
"start": "node index.js",
"test": "jest"
}
}
من الشائع جدًا استخدام هذه الميزة لتشغيل Webpack:
{
"scripts": {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
}
}
لذا بدلاً من كتابة هذه الأوامر الطويلة، والتي من السهل نسيانها أو كتابة أخطاء فيها، يمكنك تشغيل
npm run watch
npm run dev
npm run prod