ستأخذك هذه المقالة عبر اثنين من مديري الحزم القويين في 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 init
: إنشاء package.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
سيتم تثبيت أحدث إصدار منmd5
2.xx
(أحدث إصدار ضمن الإصدارين الرئيسيين)، وهو ليس بالضرورة 2.1.0، ولكن قد يكون أيضًا 2.3.0
عندما يبدأ إصدار الحزمة بـ ~
، سيتم قفله على الإصدار الرئيسي الثاني
// package.json "التبعيات": { "md5": "~2.1.0" },
من خلال
npm i
بتثبيت أحدث إصدار منmd5
2.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
على الكثير من المحتوى. تشرح هذه المقالة فقط المحتوى الأكثر استخدامًا. إذا كنت تريد معرفة المزيد، فيمكنك الانتقال إلى الموقع الرسمي المقابل لمشاهدته.