مقدمة
في Node.js، يجب إعادة تشغيل العملية لتطبيق التغييرات. هذا يُضيف خطوة إضافية إلى سير عملك. يمكنك التخلص من هذه الخطوة الإضافية باستخدام nodemon لإعادة تشغيل العملية تلقائيًا.
nodemon هي أداة واجهة سطر أوامر (CLI) من تطوير rem، تُجمّع تطبيق Node، وتراقب نظام الملفات، وتُعيد تشغيل العملية تلقائيًا. في هذه المقالة، ستتعلم كيفية تثبيت nodemon وإعداده وتكوينه.
المتطلبات الأساسية
- تم تثبيت Node.js
الخطوة 1 – تثبيت nodemon
أولاً، عليك تثبيت Nodemon على جهازك. يمكنك استخدام الأداة عالميًا أو محليًا في مشروعك باستخدام npm أو غزل ثَبَّتَ.
يمكنك بدء تشغيل Nodemon عالميًا باستخدام npm ثَبَّتَ:
npm install nodemon --globalأو مع غزل:
yarn global add nodemonيمكنك أيضًا تثبيت nodemon محليًا. عند إجراء تثبيت محلي، يمكنك تثبيت nodemon كاعتماد للمطور باستخدام الأمر --save-dev (أو --dev).
تثبيت Nodemon محليًا باستخدام npm ثَبَّتَ:
npm install nodemon --save-devأو مع غزل:
yarn add nodemon --devأحد الأشياء التي يجب ملاحظتها حول التثبيت المحلي هو أنه لا يمكنك استخدام أمر nodemon بشكل مباشر:
Outputcommand not found: nodemonيمكنك تشغيل الحزمة المثبتة محليًا:
./node_modules/.bin/nodemon.js [your node app]يمكنك أيضًا استخدامه في نصوص npm أو مع npx.
الخطوة 2 - إعداد مشروع Express مثال مع nodemon
يمكنك استخدام nodemon لبدء سكربت Node. على سبيل المثال، إذا كان لديك خادم Express في الملف server.js إطلاق، يمكنك عقدة قم بتشغيل ورؤية التغييرات مثل هذا:
nodemon server.jsيمكنك تمرير الوسائط بنفس الطريقة التي تقوم بها بتشغيل البرنامج النصي باستخدام Node:
nodemon server.js 3006تبدأ العملية من جديد في كل مرة تقوم فيها بإجراء تغيير على ملف يحتوي على أحد الامتدادات الافتراضية (js، أو .mjs، أو .json، أو .coffee، أو .litcoffee) في الدليل الحالي أو دليل فرعي.
دعنا نكتب ملف server.js كمثال يرسل الرسالة: تطبيق Dolphin يستمع على المنفذ ${port}!.
const express = require('express')
const app = express()
const port = 3000
app.listen(port, ()=> console.log(`Dolphin app listening on port ${port}!`))قم بتشغيل المثال مع nodemon:
nodemon server.jsيعرض المخرج الطرفي المخرجات التالية:
Output
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
Dolphin app listening on port 3000!أثناء تشغيل Nodemon، لنُجري تعديلاً على ملف server.js. غيّر النتيجة إلى رسالة أخرى: تطبيق Shark يستمع على المنفذ ${port}!.
يعرض المخرج الطرفي المخرجات التالية:
Output
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Shark app listening on port 3000!يُظهر مخرجات المحطة الطرفية من تطبيق Node.js التغييرات الجديدة.
يمكنك الكتابة في أي وقت ر.س وضرب يدخلأعد تشغيل العملية.
من ناحية أخرى، سيبحث nodemon أيضًا عن الملف الرئيسي المحدد في ملف package.json الخاص بمشروعك:
{
// ...
"main": "server.js",
// ...
}إذا لم يتم تحديد الملف الرئيسي، يبحث nodemon عن البرنامج النصي لبدء التشغيل:
{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}بمجرد إجراء التغييرات على package.json، يمكنك بعد ذلك استدعاء nodemon لتشغيل تطبيق العينة في وضع المراقبة دون الحاجة إلى المرور عبر server.js.
الخطوة 3 – خيارات Nodemon
يمكنك تغيير إعدادات التكوين الموجودة لـ nodemon.
دعونا نلقي نظرة على بعض الخيارات الرئيسية:
- –exec: استخدم المفتاح –exec لتحديد ملف ثنائي لتنفيذه. على سبيل المثال، عند دمجه مع الملف الثنائي ts-node، يُمكن أن يكون –exec مفيدًا لمشاهدة التغييرات وتنفيذ ملفات TypeScript.
- –ext: حدد امتدادات ملفات مختلفة لمراقبتها. لهذا التبديل، قدّم قائمة مفصولة بفواصل من امتدادات الملفات (على سبيل المثال، –ext js,ts).
- –delay: افتراضيًا، ينتظر nodemon ثانية واحدة قبل إعادة تشغيل العملية عند تغيير ملف، ولكن باستخدام مفتاح –delay، يمكنك تحديد مدة تأخير مختلفة. على سبيل المثال، nodemon –delay 3.2 لتأخير 3.2 ثانية.
- –watch: استخدم مفتاح –watch لتحديد عدة مجلدات أو ملفات لمراقبتها. أضف مفتاح –watch لكل مجلد ترغب بمراقبته. افتراضيًا، تتم مراقبة المجلد الحالي ومجلداته الفرعية، لذا باستخدام –watch، يمكنك تحديده بمجلدات فرعية أو ملفات محددة.
- –ignore: استخدم مفتاح –ignore لتجاهل ملفات أو أنماط ملفات أو أدلة معينة.
- –verbose: إخراج أكثر تفصيلاً بمعلومات حول الملفات التي تم تغييرها لإعادة تشغيل بدء التشغيل.
يمكنك رؤية جميع الخيارات المتاحة باستخدام الأمر التالي:
nodemon --helpباستخدام هذه الخيارات، دعنا ننشئ أمرًا لتلبية السيناريو التالي:
- مراقبة دليل الخادم
- حدد الملفات ذات الامتداد .ts
- تجاهل الملفات ذات الامتداد .test.ts
- تشغيل الملف (server/server.ts) باستخدام ts-node
- انتظر ثلاث ثوان لإعادة التشغيل بعد تغيير الملف
nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts
يعرض المخرج الطرفي المخرجات التالية:
Output
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): server
[nodemon] watching extensions: ts
[nodemon] starting `ts-node server/server.ts`يجمع هذا الأمر بين الخيارات –watch، و-ext، و-exec، و-ignore، و-delay لتلبية متطلبات السيناريو الخاص بنا.
الخطوة 4 – تكوين nodemon
في المثال السابق، قد تكون إضافة مفاتيح التكوين عند تشغيل nodemon أمرًا مُملًا. الحل الأمثل للمشاريع التي تتطلب إعدادات مُعقدة هو تعريف هذه الخيارات في ملف nodemon.json.
على سبيل المثال، فيما يلي نفس التكوينات الموجودة في مثال سطر الأوامر السابق، ولكن تم وضعها في ملف nodemon.json:
{
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}لاحظ استخدام execMap بدلاً من مفتاح –exec. يسمح لك execMap بتحديد الملفات الثنائية لإضافات ملفات محددة.
بدلاً من ذلك، إذا كنت تفضل عدم إضافة ملف تكوين nodemon.json إلى مشروعك، فيمكنك إضافة هذه الإعدادات إلى ملف package.json ضمن مفتاح nodemonConfig:
{
"name": "nodemon-example",
"version": "1.0.0",
"description": "",
"nodemonConfig": {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...بعد إجراء التغييرات على nodemon.json أو package.json، يمكنك بدء تشغيل nodemon باستخدام البرنامج النصي المطلوب:
nodemon server/server.tsيلتقط nodemon الإعدادات ويستخدمها. بهذه الطريقة، يُمكن حفظ إعداداتك ومشاركتها وتكرارها لتجنب أخطاء النسخ واللصق أو الكتابة في سطر الأوامر.
نتيجة
في هذه المقالة، تعلمت كيفية استخدام nodemon مع تطبيقات Node.js. تساعد هذه الأداة على أتمتة عملية إيقاف خادم Node وتشغيله للاطلاع على التغييرات.









