ستأخذك هذه المقالة عبر اثنين من مديري الحزم القويين في Node.js: npm وnear، وآمل أن يكون مفيدًا لك!

دورة المقدمة السريعة لـ Node.js: أدخل لتتعلم
الخطوة الأولى لتعلم Node هي فهم مدير الحزم الخاص بالعقدة : npm ، أعتقد أن الجميع على دراية بـ npm ، لأننا غالبًا ما نستخدمه لتنزيل بعض موارد الحزم.
ولكن نظرًا لأن مكتبة موارد npm (https://www.npmjs.com/) موجودة في الخارج، فإن سرعة تنزيل الموارد باستخدامها بطيئة نسبيًا، لذلك تتم مزامنة node包管理器التابعة لجهات خارجية مثل yarn والمديرين المحليين مع npm المستودعات المحدثة مرآة تاوباو (cnpm)
بعد ذلك سوف نتعلم هذه المحتويات بعمق، فلنبدأ!
لقد بدأ تحديث عمود سلسلة Node، تابع المدون واشترك في العمود وتعرف على Node دون أن تضيع!
ما هو npm
قبل استخدام npm ، يجب عليك أولاً أن تفهم ما هو npm في المقالة الأولى من عمود سلسلة Node [Node.js | الطريقة الوحيدة من الواجهة الأمامية إلى المكدس الكامل]، تم ذكر npm هو مستودع Node مفتوح المصدر وهو الأكبر في العالم مستودع مفتوح المصدر
عنوان هذا المستودع هو: https://www.npmjs.com/
اعتبارًا من 17 مارس 2020، قدمت npm 1.3 مليون حزمة لحوالي 12 مليون مطور، قاموا بتنزيلها 75 مليار مرة شهريًا
لتنزيل الموارد الموجودة في مستودع npm واستخدامها، يمكنك استخدام npm的指令(بدءًا بـ npm ، مثل npm i axios download axios ) أو استخدام تعليمات جهة خارجية أخرى ( Node包管理器التابع لجهة خارجية)، مثل الغزل، وما إلى ذلك .
البيان الرسمي:
npmهي أداة لإدارة الحزم وتوزيعها لـNodeJSتنعكس إدارة الحزم في حقيقة أنها عبارة عن مستودع
NodeJS، الذي يقوم بتخزين وإدارة حزم برامجNodeJSالمختلفة.تتجسد أداة التوزيع في استخدام
npm的指令لتنزيل الحزم في مستودعnpm.
عندما نقوم بتكوين بيئة NodeJS ، يتم تثبيت npm指令模块مع NodeJS ، ويمكننا تشغيل npm -v من خلال الجهاز لعرض الإصدار المثبت:

لكن إذا كان إصدار npm المثبت افتراضيًا قديمًا جدًا، فيمكنك أيضًا تثبيت npm وتحديثه يدويًا بنفسك:
npm i npm@latest -g
يمثل
@latestتثبيت أحدث إصدار، ويمثل-gالتثبيت العام، وستتم مناقشة تعليماتnpmهذه لاحقًا.
يمكن العثور على شيء سحري أعلاه، حيث نقوم بتثبيت npm من خلال npm .
من السهل في الواقع فهم ذلك، ويتم تخزين npm的指令模块أيضًا في مستودع npm كحزمة، واسم هذه الحزمة هو npm . راجع عنوان npm :

لذا فإن ما نسميه عمومًا npm يشير فقط إلى وحدة أوامر npm (الحزمة المسماة npm)
لكن في الواقع، تشير كلمة
npmإلىnpm指令模块، وتشير أيضًا إلىnpmوهو مستودعNodeJSمفتوح المصدر نفسه، لذلك نقوم بتنزيلnpmفيnpm(يمثل npm هذا المستودع مفتوح المصدر لـ NodeJS) (يمثل npm هذا مفتوح المصدر المستودع المصدر المسمى npm هذه الحزمة، هذه الحزمة هي وحدة أوامر npm)
أوامر npm الشائعة
هناك العديد من تعليمات
npm، ونذكر هنا فقط التعليمات شائعة الاستخدام. لمزيد من المعلومات، يرجى الاطلاع على الوثائق الرسمية لـ npm.
: إنشاء
npm initpackage.json
npm install : قم بتنزيل جميع الموارد المسجلة في package.json
npm install 包名: قم بتنزيل الحزمة المحددة إلى الدليل الحالي
npm uninstall 包名: قم بإلغاء تثبيت الحزمة المحددة في الدليل الحالي
npm update 包名: قم بتحديث الحزمة المحددة في الدليل الحالي إذا لم تتم إضافة اسم الحزمة، فسيتم تحديث جميع الحزم الموجودة في الدليل الحالي.
npm outdated 包名: تحقق مما إذا كانت الحزمة المحددة في الدليل الحالي قديمة أم لا . إذا لم تتم إضافة اسم الحزمة، فسيتم فحص جميع الحزم الموجودة في الدليل الحالي.
npm info 包名: احصل على معلومات مفصلة حول الحزمة في الدليل الحالي
npm list : عرض جميع الحزم المثبتة في الدليل الحالي وتبعياتها وعرض رقم الإصدار (يمكن اختصار list بـ ls )
npm list 包名: عرض رقم إصدار الحزمة المحددة المثبتة في الدليل الحالي (يمكن اختصار list بـ ls )
بعض النقاط الإضافية:
يمكن اختصار install بـ i ، مثل: يمكن اختصار npm install axios بـ npm i axios
يمكن اختصار uninstall كـ un
أضف الرمز @ بعد اسم الحزمة لتحديد إصدار الحزمة، مثل: npm i md5@1 تنزيل الإصدار 1 من md5، npm i md5@latest يعني تنزيل أحدث إصدار من md5
لاحقة أمر npm
-g : تحديد البيئة العالمية
يعمل الأمر
npmافتراضيًا في الدليل الحالي. تحدد إضافة-gالتشغيل في البيئة العامة ، كما ذكرنا أعلاه، قم بتثبيت أحدث إصدار من npm عالميًا:npm i npm@latest -g، بحيث يمكن استخدام npm في أي دليل. .
يمكن اختصار --save كـ -s : تحديد التبعيات في بيئة الإنتاج (المسجلة في dependencies )
بعد إصدار
npm5، يكون الإعداد الافتراضي هو--save. على سبيل المثال، يجب تثبيت axios في كل من بيئة الإنتاج وبيئة التطوير:npm i axios -s
يمكن اختصار --save-dev كـ -D : تحديد التبعيات في بيئة التطوير (المسجلة في devDependencies )
لتثبيت برنامج babel غير المطلوب في بيئة الإنتاج (يستخدم فقط في بيئة التطوير):
npm i babel -D
يمكن اختصار --save-prod كـ -P : مثل --save
يمكن اختصار --save-optional كـ -O : تحديد التبعيات الاختيارية (المسجلة في optionalDependencies )
--no-save : لن يتم تسجيله في package.json
للاطلاع على الوظائف والاختلافات المحددة لـ
-g,--save,--save-devيرجى الاطلاع على مقالتي: الفرق بين npm install -g/–save/–save-dev
يمكن أيضًا وضع لاحقة أمر npm أمام اسم الحزمة:
npm i -g npm@latest
إدارة حزمة التبعية
في npm ، التبعيات المعروفة هي: dependencies وتبعيات devDependencies
بالإضافة إلى ذلك، فهو يشمل في الواقع:
peerDependencies ,
optionalDependencies
bundledDependencies / bundleDependencies
يتم تسجيل العديد من التبعيات، بما في ذلك هذه، في package.json :

لقد ذكرنا أعلاه هذه التبعيات عند الحديث عن لاحقات أوامر npm ، وفيما يلي وصف تفصيلي لما تمثله:
dependencies وتبعيات devDependencies
راجع مقالتي الأخرى: الفرق بين npm install -g/–save/–save-dev
peerDependencies
يمكنك الاطلاع على مقال الرجل الكبير: فهم تبعيات الأقران في مقال واحد
optionalDependencies
التبعيات الاختيارية إذا كانت هناك بعض الحزم التابعة التي لا يزال من الممكن تشغيلها حتى إذا فشل التثبيت أو كنت تريد استمرار تشغيل npm، فيمكنك استخدام
optionalDependenciesبالإضافة إلى ذلك، ستحلoptionalDependenciesمحل التبعيات التي تحمل الاسم نفسه فيdependencies، لذا لا تفعل ذلك. اكتبهم في كلا المكانين.
bundledDependencies / bundleDependencies
تبعيات التعبئة والتغليف،
bundledDependenciesهي كائن مصفوفة تحتوي على أسماء الحزم التابعة. عند النشر، سيتم تجميع الحزم الموجودة في هذا الكائن في حزمة الإصدار النهائي. يجب أولاً الإعلان عن الحزم الموجودة في المصفوفة فيdevDependenciesأوdependencies، وإلا فإن الحزمة ستبلغ عن خطأ. خطأ.
مشكلات إصدار الحزمة التي تحتاج إلى الاهتمام في package.json
سيتم تسجيل معلومات الإصدار لجميع الحزم التي تم تنزيلها من خلال npm في package.json
عند تشغيل npm i سيتم تنزيله استنادًا إلى معلومات الحزمة المسجلة في package.json ، وقواعد التنزيل الخاصة به هي كما يلي:
عندما يبدأ إصدار الحزمة بـ ^ (افتراضي) ، سيتم قفل الإصدار الكبير
// package.json
"التبعيات": {
"md5": "^2.1.0" // } يبدأ بـ ^،من خلال
npm iسيتم تثبيت أحدث إصدار منmd52.xx(أحدث إصدار ضمن الإصدارين الرئيسيين)، وهو ليس بالضرورة 2.1.0، ولكن قد يكون أيضًا 2.3.0
عندما يبدأ إصدار الحزمة بـ ~ ، سيتم قفله على الإصدار الرئيسي الثاني
// package.json
"التبعيات": {
"md5": "~2.1.0"
},من خلال
npm iبتثبيت أحدث إصدار منmd52.1.x(أحدث إصدار تحت الإصدار 2.1)، وهو ليس بالضرورة 2.1.0، ولكنه قد يكون أيضًا 2.1.1
إصدار الحزمة هو * وسيتم قفله على أحدث إصدار
// package.json
"التبعيات": {
"md5": "*"
},عبر
npm iبتثبيت أحدث إصدار منmd5
إذا لم تكن هناك بادئة قبل إصدار الحزمة ، فسيتم قفلها على الإصدار المحدد.
// package.json
"التبعيات": {
"md5": "2.1.0"
},سأقوم بتثبيت الإصدار 2.1.0 من
md5عبرnpm i
حل مشكلة بطء سرعة npm
نظرًا لأن مستودع npm موجود في الخارج، فسيكون من الأبطأ بالنسبة لنا استخدام أمر npm في الصين لتنزيل محتوى هذا المستودع الأجنبي.
في هذا الوقت، يمكننا تشغيل الأمر التالي لتبديل مصدر مستودع npm إلى مصدر صورة Taobao المحلي (cnpm) :
سجل مجموعة تكوين npm https://registry.npmmirror.com
استخدم npm config get registry لعرض المصدر الحالي:

عند استخدام npm في المستقبل، سيتم تنزيله تلقائيًا من مستودع مرآة Taobao المحلي، وستكون السرعة سريعة جدًا.
عنوان المصدر السابق لمرآة تاوباو كان http://registry.npm.taobao.org، ولكن تم تغييره الآن إلى http://registry.npmmirror.com عرض التفاصيل
ولكن سيكون من الصعب علينا حتماً تبديل المصادر عن طريق تعديل تكوين npm . يمكننا تثبيت nrm عالميًا لمساعدتنا في تبديل مصادر npm بسرعة.
استخدم nrm لتبديل مصادر npm بسرعة
تثبيت Nrm عالميًا:
تثبيت npm -g nrm
قم بتنفيذ nrm ls لعرض مصادر npm القابلة للتحويل :

استخدم npm use لتبديل المصادر ، مثل التبديل إلى مصدر تاوباو: nrm use taobao

استخدم nrm test 源名لاختبار وقت استجابة المصدر المقابل:

يمكنك أن ترى أن سرعة استجابة مصدر Taobao أسرع بكثير من مصدر npm الافتراضي.
مرآة npm الصينية: cnpm
cnpm عبارة عن مرآة npmjs.org كاملة ، والتي يمكن استخدامها بدلاً من الإصدار الرسمي
تردد المزامنة بين
cnpmوالنسخة الرسمية هو مرة كل 10 دقائق، موقع cnpm الرسمي
تحميل cnpm :
تثبيت npm -g cnpm --registry=https://registry.npmmirror.com
cnpm هي مرآة تاوباو عندما نستخدم مصدر مرآة تاوباو أعلاه، نقوم فقط بتغيير مصدر npm إلى مصدر مرآة تاوباو ( cnpm ) (يشير هذا المصدر فعليًا إلى عنوان المستودع)، ثم نستخدمه من خلاله. الأمر npm .
وهنا يمكنك تنزيل الصورة الكاملة لـ cnpm مباشرة، ومن ثم يمكنك استخدام الأمر cnpm بدلاً من الأمر npm :
cnpm installcnpm و axios -g // ....
تعليمات
cnpmهي نفسها تمامًا تعليماتnpm، ما عليك سوى استخدام cnpm بدلاً من npm عند استخدامه.
الغزل عبارة عن أداة لإدارة التبعية تم إصدارها بواسطة Facebook وهي أسرع وأكثر كفاءة من npm
ثَبَّتَ:
تثبيت npm -g الغزل
تحديث الغزل:
مجموعة الغزل الإصدار الأحدث نسخة مجموعة الغزل من المصادر
ميزة
بسرعة فائقة
يقوم yarn بتخزين كل حزمة تم تنزيلها مؤقتًا، لذلك ليست هناك حاجة لتنزيلها مرة أخرى عند استخدامها مرة أخرى. يستخدم أيضًا التنزيلات المتوازية لزيادة استخدام الموارد إلى أقصى حد، بحيث تكون عمليات التثبيت أسرع
آمن للغاية <br/> قبل تنفيذ التعليمات البرمجية، سيتحقق yarn من سلامة كل حزمة تثبيت من خلال خوارزمية
تعليمات الغزل المشتركة

yarn init : تهيئة المشروع وإنشاء ملف package.json ، خطوات الإنشاء هي نفسها تقريبًا npm init
yarn help : عرض قائمة الأوامر
yarn install : قم بتنزيل جميع الموارد المسجلة في package.json ، والتي يمكن اختصارها باسم yarn
yarn add 包名: قم بتنزيل الحزمة المحددة إلى الدليل الحالي
yarn remove 包名: قم بإلغاء تثبيت الحزمة المحددة في الدليل الحالي
yarn upgrade 包名: قم بتحديث الحزمة المحددة في الدليل الحالي، يمكنك إضافة @指定版本号بعد اسم الحزمة لتحديد الإصدار الذي يحتاج إلى التحديث.
لاحقة أمر yarn
--dev : تحديد التبعيات في بيئة التطوير ( devDependencies )، والمختصرة بـ -D
--peer : تحديد التبعيات الأساسية ( peerDependencies )
--optional : تحديد التبعيات الاختيارية ( optionalDependencies )
تقدم هذه المقالة npm و yarn ، بالإضافة إلى nrm و cnpm وما إلى ذلك المشتقة من npm
يستخدم المدونون مزيجًا من npm + nrm لتبديل المصادر ، لأن هذا لا يضمن السرعة العالية فحسب، بل يسمح أيضًا بتبديل المصدر بسهولة دون الحاجة إلى تنزيل حزم إضافية مثل cnpm و yarn
يحتوي كل من npm yarn على الكثير من المحتوى. تشرح هذه المقالة فقط المحتوى الأكثر استخدامًا. إذا كنت تريد معرفة المزيد، فيمكنك الانتقال إلى الموقع الرسمي المقابل لمشاهدته.