العودة إلى المدونة

استخدام وحدات Node.js مع npm و package.json: دليل تعليمي

استخدام وحدات Node.js مع npm و package.json: دليل تعليمي

Node.js هو بيئة تشغيل جافا سكريبت مفتوحة المصدر ومتعددة المنصات. على مدى السنوات القليلة الماضية، أصبح خيارًا شائعًا لتطوير الويب الخلفي نظرًا لأدائه السريع في الإدخال/الإخراج (I/O) وميزته التي لا تضاهى في صيغة JavaScript. كما أن طبيعته التكيفية تسمح بالتخصيص السريع، مما يجعل تقنية الخادم هذه تبرز بين منافسيها.

مدير حزم Node.js — نظرة عامة

Node.js Package Manager أو npm هو مدير الحزم الافتراضي للغة JavaScript. Npm غالبًا ما يُستخدم لتثبيت البرامج النصية للمشروع وتشغيل الوحدات الخارجية في مشروع Node.js . بالإضافة إلى ذلك، فإنه يتتبع الوحدات المثبتة في المشروع باستخدام ملف package.json الذي يقع في دليل المشروع. Npm يقوم بتخزين وتسجيل المعلومات التالية:

  • الوحدات المطلوبة للمشروع وإصداراتها المثبتة، إن وجدت.
  • وصف البيانات التعريفية للمشروع والذي يتضمن تفاصيل المؤلف والترخيص، على سبيل المثال لا الحصر.
  • البرامج النصية القابلة للتنفيذ لأتمتة المهام المتعلقة بالمشروع أو الموجهة نحو الأهداف.

في هذا البرنامج التعليمي، سنرشدك خلال خطوات استخدام وحدات Node.js مع npm و package.json.

لنبدأ!

المتطلبات الأساسية

لمتابعة هذا البرنامج التعليمي، ستحتاج إلى ما يلي:

الخطوة 1: إنشاء ملف package.json

لنبدأ برنامجنا التعليمي بأخذ مثال لمشروع وهمي باستخدام وحدة locator الخاصة بـ Node.js. يهدف المشروع إلى جمع عنوان IP الخاص بالمستخدم ومشاركة النتيجة كبلد المنشأ للمستخدم. نظرًا لأننا نركز على فهم استخدام وحدات Node.js مع npm، فلا داعي لكتابة الوحدات يدويًا. بدلاً من ذلك، سنستخدم الحزم المثبتة مسبقًا والقابلة للتخصيص في مشروعنا.

JSON أو JavaScript Object Notation هو تنسيق قياسي يُستخدم لمشاركة البيانات ونقلها. في البداية، سنقوم بإنشاء ملف JSON لتخزين وإدارة تبعيات البرامج. ومع ذلك، فإن إنشاء ملف package.json يدويًا أمر مجهد ويستغرق وقتًا طويلاً. للتبسيط، سنستخدم الأمر init لإنشاء ملف package.json بدلاً من بذل جهودنا في كتابة كتل إضافية من التعليمات البرمجية لكتابة ملف JSON الخاص بنا من الصفر.

  • init أمر

أولاً، لنقم بإنشاء مجلد جديد باستخدام الأمر mkdir وتسميته locator:

بعد ذلك، استخدم الأمر cd للانتقال إلى المجلد الذي تم إنشاؤه حديثًا:

ثم، أدخل npm لبدء تشغيل الموجه التفاعلي:

بعد ذلك، سترى المخرجات:

Node.js Modules npm init 1

1. الاسم

سيتم توجيهك إلى اسم لمشروعك الجديد؛ المجلد الحالي. سترى القيم الافتراضية بين قوسين (). لإبقاء هذا البرنامج التعليمي بسيطًا وسهل الفهم، سنمضي قدمًا في الخيارات الافتراضية. اضغط على ENTER للقبول والمتابعة.

2. الإصدار

القيمة التالية هي اسم الإصدار وهو متطلب أساسي إذا قمت بمشاركة مشروعك في مستودع npm للحزم.

ملاحظة: تتبع حزم Node.js دليل Semantic Versioning (semver).

الرقم الأول: الإصدار الرئيسي ويتغير فقط عندما تتغير واجهة برمجة التطبيقات (API).

الرقم الثاني: الإصدار الفرعي الذي يتغير عند إضافة ميزات إضافية.

الرقم الأخير: إصدار التصحيح الذي يتغير عند حل خطأ أو مشكلة.

3. الوصف

إن الوصف عبارة عن سلسلة نصية معلوماتية تصف عملية عمل وحدة Node.js. في عرضنا التوضيحي، سيقوم مشروع locator بالحصول على عنوان IP الخاص بالمستخدم وإرجاع بلد المنشأ.

ملاحظة: في الغالب، تحتوي الوحدات على ملف index.js كنقطة دخول. هذه هي أيضًا خاصية main لملف package.json، وهي نقطة الدخول لوحدات npm. ومع ذلك، إذا لم يتم العثور على package.json، فسيقوم Node.js بتحميل index.js تلقائيًا.

4. اختبار أمر

هو برنامج نصي أو أمر قابل للتنفيذ لتشغيل اختبارات مشروعك. نظرًا لأن الاختبار خارج نطاق برنامجنا التعليمي، فلنتخطاه ونضغط على ENTER.

5. init أمر

سيطلب الأمر init مستودع GitHub Repository الخاص بالمشروع. مرة أخرى، دعنا نتخطى هذا الجزء ونتابع.

6. الكلمات المفتاحية

الكلمات المفتاحية عبارة عن مصفوفة من السلاسل النصية المستخدمة للبحث عن مستودع. يوصى بالحفاظ على الكلمات المفتاحية دقيقة وذات صلة بمشروعك بحيث يمكن تتبعها بسلاسة.

أدرج هذه الكلمات المفتاحية كسلاسل نصية وافصل بينها باستخدام الفواصل. في مشروعنا، اكتب ip, country, latitude، و longitude عند المطالبة وسترى أنها مدرجة ككلمات مفتاحية في package.json.

7. author

عامل حقل author كتعليقات وطريقة للتفاعل مع المستخدمين. على سبيل المثال، إذا اكتشف المستخدمون خطأً في الوحدة الخاصة بك، فيمكنهم استخدام هذا الحقل لإخطارك ومعالجة الخطأ.

  • التنسيق: "الاسم \<البريد الإلكتروني\> (الموقع الإلكتروني)".

    • تجريبي: "Paul\<paul@your_domain\> (https://your_domain)"

إضافة بيانات البريد الإلكتروني والموقع الإلكتروني اختيارية. ومع ذلك، يمكنك تحديد مؤلف صالح وإضافة تفاصيل الاتصال الخاصة بك كـ author. قم بتأكيد التفاصيل واضغط على ENTER.

8. license

إن حقل license يوضح الشروط والأحكام القانونية التي يجب على المستخدمين معرفتها أثناء استخدام الوحدة الخاصة بك. وبما أن Node.js مفتوحة المصدر، فإن npm يقوم بتهيئتها إلى ISC-license تلقائيًا.

انتقل إلى صفحة تراخيص البرمجيات مفتوحة المصدر واختر Open Source Initiative الذي يناسب احتياجاتك بشكل أفضل. اكتب UNLICENSED عند المطالبة إذا لم تكن بحاجة إلى ترخيص لمستودعك. في هذا البرنامج التعليمي، سنستخدم ترخيص ISC الافتراضي. اضغط على ENTER لإكمال هذه العملية.

سيقوم الأمر init بإنشاء ملف package.json وعرض النتيجة:

Node.js Modules npm init

بعد ذلك، اضغط على ENTER للمتابعة وإنشاء ملف package.json الخاص بنا. سيحتفظ ملف JSON الخاص بنا بسجل لجميع الوحدات والحزم التي سنقوم بتثبيتها في مشروعنا.

في الخطوة التالية، سنقوم بتثبيت التبعيات ووحدات Node.js.

الخطوة 2: تثبيت التبعيات والوحدات

يستغرق إنشاء مكتبات خارجية مخصصة وقتًا طويلاً ويتطلب جهودًا شاقة. بدلاً من ذلك، فإن الطريقة الأكثر فعالية هي تثبيت التبعيات والمكتبات الخارجية المحددة مسبقًا. في برنامجنا التعليمي، سنستخدم مكتبة HTTP للسماح لوحدة تحديد المواقع التجريبية الخاصة بنا بإجراء طلب API خارجي لجمع البيانات الجغرافية.

في هذا الدليل، سنستخدم مكتبة axios لإجراء طلبات HTTP. أولاً، دعنا نقوم بـ تثبيت axios:

ابدأ بتثبيت حزمة npm متبوعة بسردها من خلال مسافات منفصلة. أيضًا، قم بتضمين علامة --save للتأكد من حفظ المشروع كتبعية للمشروع.

سترى المخرجات التالية:

Node.js Modules install axios

افتح ملف package.json باستخدام nano أو أي محرر نصوص من اختيارك:

لاحظ الخاصية المضافة حديثًا والمميزة في أسفل كتلة البرمجية:

Node.js Modules package json

  • تنزيل تبعيات التطوير

تبعيات التطوير هي حزم تُستخدم في تطوير المشروع وليس لها فائدة في إنتاج المشروع أو صيانته. في حين أن هذه التبعيات قد تبدو غير فعالة في بيئات الإنتاج، إلا أنها تلعب دورًا مهمًا في كتابة الأكواد وإعادة كتابتها.

مثل أدوات فحص الأكواد (code linters)، تلعب تبعيات التطوير دورًا حيويًا في تطوير البرمجيات. في الغالب، يستخدم المطورون أدوات فحص الأكواد للحفاظ على التوحيد والاتساق في التنسيق أثناء تطوير المشروع، وهو أمر غير مجدٍ بخلاف ذلك في مرحلة الإنتاج.

دعنا نقوم بتثبيت أداة فحص كود كتبعية تطوير لمشروعك. أيضًا، استخدم علامة --save-dev لحفظ eslint كتبعية مطلوبة للتطوير:

لقد أضفنا @6.0.0 إلى التبعية الخاصة بنا بحيث عندما نقوم بتحديث الوحدات، يتم تمييزها بإصدار. الرمز @ سيقوم بإخطار npm للبحث عن علامة محددة تريد تثبيتها. الآن، أعد فتح ملف package.json :

سترى المخرجات التالية:

dev package json

  • الملفات التي تم إنشاؤها تلقائيًا: node_modules و package-lock.json

في البداية، أثناء تثبيت حزمة في مشروع Node.js، يتم إنشاء ملفات package.json و package-lock.json تلقائيًا. قم بتأكيد وجود هذه الملفات في دليل العمل:

بما أن معظم التبعيات المثبتة مخزنة في node_modules مجلد، ويُنصح بعدم إرسال هذا المجلد إلى مستودع التحكم في الإصدارات الخاص بك. ومع زيادة عدد الاعتماديات المثبتة، فإن حجم الـ node_modules يزداد أيضًا.

وعلى العكس من ذلك، فإن ملف package-lock.json يحتفظ بسجل للإصدارات الدقيقة المثبتة، لذا لا داعي لتضمين node_modules بشكل صريح. وعلى عكس مجلد node_modules ، يمكنك إرسال هذا الملف إلى مستودع التحكم في الإصدارات الخاص بك لأنه يعطي تمثيلاً مفصلاً لجميع الاعتماديات الخاصة بك مع إصداراتها.

  • التثبيت باستخدام package.json

إن ملفات package.json و package-lock.json تتيح لك إعداد نفس اعتماديات المشروع قبل البدء في تطوير المشروع. انتقل إلى شجرة الدليل الخاصة بك وأنشئ مجلدًا جديدًا في نفس مستوى دليل locator. قم بتسمية المجلد الجديد باسم cloned_locator:

بعد ذلك، انتقل إلى cloned_locator:

استورد ملفات package.json و package-lock.json من locator إلى cloned_locator:

تشير العلامة . إلى المجلد الحالي. قم بتثبيت الوحدات المطلوبة باستخدام الأمر التالي:

في البداية، سيقوم npm بالتحقق من ملف package-lock.json لتثبيت الوحدات. إذا لم يكن ملف القفل متاحًا، فإنه يقرأ ملف package.json لتحديد عمليات التثبيت.

بشكل عام، التثبيت من package-lock.json أمر بسيط لأن ملف القفل يحتوي على الإصدار الدقيق للوحدات واعتمادياتها. وهذا يعني أنه عندما تقوم بالتثبيت باستخدام package.json, npm سيوفر الوقت الإضافي المطلوب لتحديد إصدار متوافق ومستقر.

تجاهل اعتماديات التطوير عن طريق إضافة علامة --production :

بعد ذلك، ارجع إلى locator:

  • التثبيتات العالمية (Global)

حتى الآن، قمنا بتثبيت وحدات npm محليًا. ومع ذلك، يتوفر لديك أيضًا خيار بديل لتثبيت الحزم عالميًا واستخدامها عبر أمر واجهة الأوامر (shell) أو واجهة سطر الأوامر (CLI). على سبيل المثال، يمكنك تصفح مشروع locator الحالي باستخدام مكتبة Hexo وإدارة موقع الويب الثابت الخاص بك. استخدم الأمر التالي مع علامة -g لتثبيت واجهة سطر أوامر Hexo عالميًا:

ملاحظة: إذا واجهت خطأ أثناء تثبيت الحزم عالميًا، فجرّب هذا الأمر sudo npm i hexo-cli -g  باستخدام صلاحيات الجذر (root).

استخدم الأمر التالي للتحقق من تثبيت الحزمة بنجاح:

سترى المخرجات التالية:

hexo version

الخطوة 3: إدارة وتحديث الوحدات

إن مدير الحزم لديه مهام أكثر من مجرد تثبيت وحدات Node.js. هناك الكثير من خيارات التخصيص حيث يمكنك عرض، أو تحديث، أو إلغاء تثبيت، أو حتى إضافة طبقة أمان حسب ما يناسبك.

في هذا القسم، سنتعلم كيفية:

  1. عرض الوحدات

  2. تحديث الوحدات

  3. إلغاء تثبيت الوحدات

  4. فحص (Audit) الوحدات

دعونا نناقش كل منها بالتفصيل:

  1. عرض الوحدات

عرض الوحدات، كما يوحي الاسم، سيعطيك تفاصيل عن جميع الوحدات المثبتة في المشروع. وبدلاً من قراءة ملف package.json ، يمكنك استخدام الأمر ls أو list لمعرفة وحدات مشروعك بالتفصيل:

سترى المخرجات التالية:

npm list op

بشكل افتراضي، يقوم الأمر ls بعرض شجرة الاعتماديات بأكملها والتي تتضمن اعتماديات المشروع والوحدات التي تعتمد عليها. ومع ذلك، يمكنك الحصول على نظرة عامة واستهداف وحدة معينة بشكل صريح أيضًا. استخدم الأمر التالي للتحقق من الوحدات التي قمت بتثبيتها بدون اعتمادياتها:

سترى المخرجات التالية:

npm list depth zero

  1. تحديث الوحدات

يُنصح دائمًا بالحفاظ على تحديث وحدة npm الخاصة بك حتى لا تواجه أي أعطال أو تعارضات في البرامج. استخدم الأمر التالي للتحقق مما إذا كانت هناك حاجة للتحديث:

سترى المخرجات التالية:

Outdated

دعونا نفهم كل مصطلح بالتفصيل:

  • الحزمة (Package): يعرض هذا الـ Package المثبتة في مشروعك.
  • الحالي (Current): يوضح هذا الإصدار Current للحزمة.
  • المطلوب (Wanted): يعرض الـ npm الإصدار الذي يتوافق بشكل أفضل مع متطلبات الإصدار في package.json.
  • الأحدث: يعرض أحدث npm تم إصداره والذي يجب عليك تحديثه إذا لزم الأمر.
  • الموقع: الحزمة Location في شجرة الاعتماديات.

كما هو مقترح، يمكننا تحديث npm إلى إصدار مستقر. استخدم الأمر التالي لتحديث حزمتك الحالية:

سترى المخرجات التالية:

update eslint

بدلاً من تحديثها واحدة تلو الأخرى، يمكنك أيضاً تحديث جميع الوحدات دفعة واحدة باستخدام الأمر up :

  1. إلغاء تثبيت الوحدات

في كثير من الأحيان، قد لا تعرض التبعية المخرجات المتوقعة وتحتاج إلى إنشاء تبعية مخصصة. في ظل هذه السيناريوهات، لديك خيار لإلغاء تثبيت التبعيات من ملفات package.json و package-lock.json الخاصة بك. لنفترض أن لديك axios كتبعية وفشل في تقديم نتيجة مرضية. ستزيل بلا شك هذا المستودع من مشروعك. استخدم الأمر uninstall أو un لإزالة axios:

سترى المخرجات التالية:

Uninstall axios

على الرغم من أن الأمر uninstall قام بإزالة التبعية، إلا أننا لم نتلق أي إشعار بإزالتها. دعنا نسرد التبعيات لنرى عدد التبعيات لدينا الآن:

سترى المخرجات مع عدم وجود تبعية axios في القائمة:

npm list

  1. فحص الوحدات (Audit)

إذا كانت التبعيات المثبتة في مشروعك عرضة لأي تهديد أمني محتمل، فيمكنك اكتشافها. في البداية، تحتاج إلى تثبيت إصدار قديم من وحدة request لمعرفة كيفية عمل وحدة الفحص (audit):

سترى المخرجات التي تطلب منك إصلاح التهديدات أو الثغرات الأمنية:

add request

لتوسيع التفاصيل حول الثغرات الأمنية والتهديدات، استخدم الأمر audit :

سترى تقريراً أمنياً مفصلاً:

Node.js Modules Audit security report

لحل هذه الثغرات الأمنية، استخدم الأمر fix :

سترى المخرجات التالية:

audit update

ربما لاحظت أنه تم إصلاح اثنتين من أصل تسع ثغرات أمنية. ومع ذلك، لا تزال الثغرات السبع المتبقية قائمة في تبعياتك لأن الأمر audit fix لا يحل جميع المشاكل. من أجل حل هذه المشكلة، قد تحتاج إلى تحديث تبعيتك إلى إصدار أعلى باستخدام واجهة برمجة تطبيقات (API) مختلفة. كن حذراً عند التحديث لأن هناك احتمالاً بأن يؤدي ذلك إلى كسر الكود في مستوى أعلى في شجرة التبعيات. استخدم الأمر التالي للتأكد من اختفاء الثغرات الأمنية:

كن حذراً عند استخدام واجهة برمجة تطبيقات (API) مختلفة لحل تهديدات الثغرات الأمنية لأنه إذا لم تكن متأكداً من ذلك، فقد يؤدي ذلك إلى كسر وظائف الكود.

الخاتمة

في الختام، قمنا بتوضيح كيفية استخدام وحدات Node.js مع npm و package.json. بالإضافة إلى ذلك، استعرضنا طرق سرد وتحديث وإدارة وفحص وإلغاء تثبيت تبعيات الحزم الخاصة بنا. كتحدٍ تالٍ، نشجعك على استخدام المفاهيم التي تمت مناقشتها في هذا الدليل وتجربة تثبيت واختبار الحزم بنفسك. يمكنك أيضاً محاولة بناء تطبيقات Node.js و تكوين التبعيات للارتقاء بتعلمك.

إلى جانب ذلك، هناك العديد من المواد التعليمية الأخرى حول مواضيع Node.js و Javascript التي يمكنك العثور عليها في مدونتنا:

حوسبة سعيدة!

author

Preslav Dobrev

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.