مقدمه
در Node.js، برای اعمال تغییرات باید فرآیند را دوباره راه اندازی کنید. این یک مرحله اضافی به گردش کار شما اضافه می کند. می توانید این مرحله اضافی را با استفاده از nodemon برای راه اندازی مجدد خودکار فرآیند حذف کنید.
nodemon یک ابزار رابط خط فرمان (CLI) است که توسط rem توسعه یافته است که برنامه Node شما را بسته بندی می کند، سیستم فایل را تماشا می کند و به طور خودکار فرآیند را مجدداً راه اندازی می کند.در این مقاله با نصب، راه اندازی و پیکربندی nodemon آشنا خواهید شد.
پیش نیازها
- Node.js نصب شده باشد
مرحله 1 – نصب nodemon
ابتدا باید nodemon را روی دستگاه خود نصب کنید. ابزار را به صورت سراسری یا محلی روی پروژه خود با استفاده از npm
یا yarn
نصب کنید.
می توانید nodemon را به صورت سراسری با npm
نصب کنید:
npm install nodemon --global
یا با Yarn
:
yarn global add nodemon
همچنین می توانید nodemon را به صورت محلی نصب کنید. هنگام اجرای یک نصب محلی، می توانید nodemon را به عنوان یک وابستگی توسعه دهنده با –save-dev (یا –dev) نصب کنید.
Nodemon را به صورت محلی با npm
نصب کنید:
npm install nodemon --save-dev
یا با Yarn
:
yarn add nodemon --dev
یکی از مواردی که در نصب محلی باید به آن توجه داشته باشید این است که نمی توانید مستقیماً از دستور nodemon استفاده کنید:
Outputcommand not found: nodemon
می توانید بسته نصب شده محلی را اجرا کنید:
./node_modules/.bin/nodemon.js [your node app]
همچنین می توانید از آن در اسکریپت های npm یا با npx استفاده کنید.
مرحله 2 – راه اندازی یک پروژه Example Express با nodemon
می توانید از nodemon برای شروع یک اسکریپت Node استفاده کنید. به عنوان مثال، اگر یک سرور Express را در فایل server.js
راه اندازی کنید، می توانید nodemon
را راه اندازی کنید و تغییراتی مانند این را مشاهده کنید:
nodemon server.js
میتوانید آرگومانها را به همان روشی که اسکریپت را با Node اجرا میکنید، ارسال کنید:
nodemon server.js 3006
هر بار که تغییری در فایلی با یکی از پسوندهای پیشفرض مشاهده شده (js، .mjs، .json، .coffee، یا .litcoffee) در فهرست راهنمای فعلی یا یک زیرشاخه ایجاد میکنید، فرآیند دوباره شروع میشود.
بیایید یک نمونه فایل server.js بنویسیم که پیام را به بیرون ارسال می کند: برنامه دلفین در حال گوش دادن به پورت ${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 در حال نمایش تغییرات جدید است.
میتوانید در هر زمان با تایپ rs
و زدن ENTER
، فرآیند را مجدداً راهاندازی کنید.
از طرف دیگر، 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 را به پروژه خود اضافه نکنید، میتوانید این تنظیمات را تحت یک کلید nodemonConfig به فایل package.json اضافه کنید:
{
"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 برای مشاهده تغییرات کمک میکند.