بسیاری از پروژه های جاوا اسکریپت از سهولت استفاده و در دسترس بودن گسترده npm بهره می برند. اگر هنوز مزایای آن را تجربه نکرده اید، فوراً شروع کنید.
اسکریپتهای npm مجموعهای از دستورات ترمینال را جمعآوری میکنند که میتوانید از آنها برای خودکارسازی وظایف در یک پروژه جاوا اسکریپت استفاده کنید. آنها همچنین یک روش ثابت برای اجرای دستورات در محیط های مختلف ارائه می دهند.
می توانید اسکریپت های npm را در یک فایل package.json تنظیم کنید، آنها را در خط فرمان اجرا کنید و از مجموعه وسیعی از گزینه ها برای پیکربندی رفتار آنها استفاده کنید.
راه اندازی اسکریپت های npm در فایل package.json
شما معمولاً اسکریپت های npm را در یک فایل package.json که در ریشه پروژه جاوا اسکریپت شما قرار دارد، تعریف می کنید. این یک الزام نیست زیرا می توانید اسکریپت ها را از فایل های دیگر اجرا کنید، اما package.json دسترسی و مدیریت اسکریپت های شما را آسان تر می کند.
توجه داشته باشید که برای پیگیری باید npm و Node را در محیط توسعه خود نصب کنید. در اینجا چند مقاله مفید آورده شده است:
- نحوه نصب Node.js و npm در ویندوز.
- نحوه نصب Node.js و npm در اوبونتو.
برای تنظیم یک اسکریپت npm در package.json، مراحل زیر را دنبال کنید:
- به ریشه پروژه خود بروید.
- npm init را در ترمینال اجرا کنید. دستور از شما سوالاتی در مورد پروژه شما می پرسد. به آنها پاسخ دهید تا یک package.json file.npm init مناسب ایجاد کنند
- در فایل package.json، قسمت اسکریپت ها را پیدا کنید. در اینجا، می توانید نام یک اسکریپت و دستوری را که باید به صورت جفت کلید/مقدار اجرا شود، اضافه کنید. برای مثال، اسکریپت زیر که hello-world نام دارد، هنگام اجرا «Hello world» را در ترمینال چاپ میکند.{ «scripts»: { “hello-world”: “echo \\”Hello world\\”” }}
npm init
{
"scripts": {
"hello-world": "echo \\"Hello world\\""
}
}
در اینجا چند اسکریپت رایج برای پروژه های جاوا اسکریپت آورده شده است:
- start: این اسکریپت سرور توسعه را راه اندازی می کند. به عنوان مثال، در یک پروژه Node، می تواند سرور را با استفاده از nodemon اجرا کند.
- build: کد تولید برنامه شما را تولید می کند و ممکن است از ابزاری مانند webpack برای کوچک کردن و بسته بندی کد استفاده کند.
- test: این اسکریپت تست های تعریف شده در پروژه شما را اجرا می کند. ممکن است یک چارچوب آزمایشی مانند Jest اجرا کند.
- lint: یک اسکریپت lint ابزاری مانند ESLint را برای بررسی کد برای خطاهای احتمالی اجرا می کند.
- watch: این اسکریپت کد منبع را برای تغییرات مشاهده می کند و سپس دستوری را اجرا می کند. برای اجرای مجدد تست ها یا بازسازی برنامه در مورد تغییر کد مفید است.
- deploy: دستوری را اجرا می کند که برنامه را در محیط مشخص شده مانند تولید یا مرحله اجرا می کند.
اسکریپت های قبل و بعد
npm از اسکریپت های قبل و بعد پشتیبانی می کند. پیش اسکریپت ها قبل از یک اسکریپت خاص اجرا می شوند در حالی که اسکریپت های پست بعد از آن اجرا می شوند. شما می توانید اسکریپت های پیش و پست برای هر اسکریپت ایجاد کنید، فقط پیشوند “pre” یا “post” را به نام اسکریپت خود اضافه کنید.
به عنوان مثال، در زیر اسکریپت های پیش آزمون و پس آزمون که به ترتیب قبل و بعد از اسکریپت تست اجرا می شوند، آمده است.
{
"scripts": {
"pretest": "npm run lint",
"test": "jest",
"posttest": "npm run build"
}
}
اجرای اسکریپت های npm از package.json
هنگامی که یک اسکریپت npm را به package.json اضافه کردید، می توانید آن را با استفاده از دستور npm run اجرا کنید.
در اینجا نحو است:
npm run <script-name>
به عنوان مثال، برای اجرای اسکریپت شروع که قبلا تعریف شده بود، از:
npm run start
برای دریافت لیست تمام اسکریپت های موجود در یک پروژه، می توانید دستور npm run را به تنهایی اجرا کنید. در اینجا چند نمونه خروجی آورده شده است:
Scripts available in npm-scripts-demo@1.0.0 via `npm run-script`:
hello-world
echo "Hello world"
نام اسکریپت و دستوری که اجرا می شود را فهرست می کند.
استفاده از دستورات کوتاه برای اجرای اسکریپت های داخلی
npm از چندین اسکریپت داخلی پشتیبانی می کند که می توانید با استفاده از دستورات مختصر اجرا کنید. به عنوان مثال، برای اجرای یک اسکریپت npm با نام start، می توانید از npm start به جای npm run start استفاده کنید.
این راحت تر و سریعتر از تایپ دستور کامل است. سایر اسکریپت های داخلی که می توانید مانند این اجرا کنید عبارتند از “test”، “stop” و “restart”.
اجرای چند اسکریپت npm
می توانید چندین اسکریپت npm را به دو روش اجرا کنید:
- به ترتیب
- به موازات
اگر از لینوکس یا هر سیستم مشابه یونیکس استفاده میکنید، میتوانید از روشهای استاندارد اجرای چندین دستور به طور همزمان استفاده کنید.
برای اجرای چندین اسکریپت npm به صورت متوالی از && استفاده کنید، برای مثال:
npm run start && npm test
برای اجرای چندین اسکریپت npm به صورت موازی از &، به عنوان مثال:
npm run server & npm run client
در محیط های غیر یونیکس، می توانید از دستور npm-run-all یا بسته همزمان npm استفاده کنید.
استفاده از npm-run-all:
npm-run-all --parallel server client
استفاده همزمان در package.json.
"scripts": {
"dev": "concurrently \\"npm run server\\" \\"npm run client\\"",
}
توجه داشته باشید که قبل از استفاده باید بسته های npm-run-all و Concurrently را نصب کنید.
عیب یابی خطاهای رایج اسکریپت Npm
در زیر برخی از خطاهای رایجی که ممکن است هنگام اجرای اسکریپت های npm با آنها روبرو شوید آورده شده است:
- npm er! اسکریپت گم شده – این خطا زمانی رخ می دهد که اسکریپتی را که می خواهید اجرا کنید در فایل package.json تعریف نکرده باشید. مطمئن شوید که نام اسکریپت را درست مینویسید و در قسمت اسکریپت فایل package.json تعریف شده است.
- مجوز رد شد – این خطا زمانی رخ می دهد که شما مجوز اجرای یک اسکریپت را ندارید، بنابراین مطمئن شوید که مجوزهای مناسب را دارید.
- وابستگی های گمشده – این خطا زمانی رخ می دهد که اسکریپت از بسته ای استفاده می کند که نصب نشده است. از ابزاری مانند depcheck برای بررسی وابستگیهای گمشده در package.json استفاده کنید و سپس آنها را با استفاده از npm install نصب کنید.
- دستور ناشناخته – این خطا معمولاً زمانی رخ می دهد که یک اسکریپت سفارشی را به عنوان یک دستور npm داخلی اجرا می کنید. هنگام اجرای اسکریپت های سفارشی مطمئن شوید که از npm run یا npm run-script استفاده می کنید.
استفاده از متغیرهای محیطی در اسکریپت های npm
متغیرهای محیطی به شما این امکان را می دهند که اطلاعات را بدون کدگذاری سخت منتقل کنید. برای استفاده از متغیرهای محیطی در اسکریپت npm، می توانید از بسته cross-env npm استفاده کنید. این ابزار به شما کمک می کند تا یک متغیر محیطی را در هر محیطی تنظیم کنید.
با اجرای این دستور در ترمینال شروع کنید تا آن را به عنوان یک وابستگی توسعه دهنده نصب کنید:
npm i save -D cross-env
سپس آن را در اسکریپت خود به صورت زیر استفاده کنید:
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack"
}
}
در اینجا، cross-env متغیر NODE_ENV را روی “production” تنظیم می کند.
انتقال آرگومان های خط فرمان به اسکریپت ها
می توانید آرگومان های خط فرمان را با استفاده از دو خط تیره “–” بعد از نام اسکریپت به یک اسکریپت npm ارسال کنید. به عنوان مثال، دستور زیر اسکریپت تست را با آرگومان watch اجرا می کند:
npm run test -- --watch
همچنین می توانید یک آرگومان خط فرمان را به یک اسکریپت npm ارسال کنید:
npm run my-port --PORT=3000
سپس به صورت زیر به آن در اسکریپت دسترسی پیدا کنید.
"scripts": {
"my-port": "echo \\"Port: $npm_config_PORT\\""
}
در یک سیستم ویندوز، از این استفاده کنید:
"scripts": {
"my-port": "echo \\"Port: %npm_config_PORT%\\""
}
اسکریپت باید “Port: 3000” را هنگام اجرا چاپ کند.
چرا از اسکریپت های npm استفاده کنیم؟
میتوانید اسکریپتها را به package.json اضافه کنید، آنها را در خط فرمان اجرا کنید، از hookهای pre و post استفاده کنید و آرگومانهای خط و متغیرهای محیطی را به آنها منتقل کنید.
اسکریپت های npm یک روش قدرتمند برای خودکارسازی وظایف در پروژه های جاوا اسکریپت هستند. آنها می توانند گردش کار شما را بهبود بخشند و با ارائه دستورات ثابت برای اجرای چندین کار در وقت شما صرفه جویی کنند.