npm –save یا –save-dev ؟! کدام یک را استفاده کنیم؟!

npm –save یا –save-dev ؟! کدام یک را استفاده کنیم؟!

npm –save یا save-dev
کدام یک را استفاده کنیم؟!


اگر تابه‌حال با NodeJS کار کرده باشید، طبیعتا یک یا چند پکیج جداگانه‌ای را از طریق NPM و با دستور «npm install <package>» نصب کرده‌اید. در واقع با اجرای این دستور، NPM یا درکل NodeJS، پکیج را در دایرکتوری فعلی شما نصب خواهد کرد. به عبارتی پکیج وارد شده در داخل پوشه‌ی node_modules موجود در مسیر فایل‌های پروژه‌ی شما نصب خواهد شد.

حالا برای ذخیره‌ی این پکیج‌های نصب شده به عنوان وابستگی (Dependency) های پروژه‌ی خود که در package.json ثبت می‌شوند، دو راه حل وجود دارد:

  • –save-dev
  • –save
package.json
هر بسته یا پکیج NPM ای از جمله پروژه‌ی فعلی شما، دارای یک فایل به نام package.json می‌باشد؛ که شامل متادیتا یا اطلاعات مختلف مربوط به پروژه است. در واقع این فایل برای دادن اطلاعات به NPM استفاده می‌شود تا بتواند پروژه را شناسایی کرده و وابستگی (Dependency یا پکیج‌های دیگری که از آن در این پکیج استفاده شده است) های آن‌را مدیریت کند. این فایل همچنین می‌تواند شامل اطلاعات دیگری از جمله شرح پروژه، نسخه پروژه، لایسنس و … نیز باشد.

استفاده از –save-dev

زمانی از dev استفاده می‌شود که بخواهیم پکیجی را برای توسعه دهنده دانلود کنیم؛ یعنی پکیج برای هدف توسعه (Dev = Development) مورد استفاده قرار می‌گیرد. و از این رو در زمان ارائه‌ی محصولمان، این وابستگی‌های Dev وجود نخواهند داشت و در واقع این پکیج‌ها برای اجرای محصولی که تولید می‌کنیم لازم نبوده و تنها به عنوان یک ابزار برای توسعه دهنده  (کسی که در حال کار روی پروژه است) در ساخت پروژه کمک می‌کنند! پکیج Grunt نمونه‌ای از پکیج‌های Dev می‌باشد.

مثال: فرض کنید قصد داریم از پکیج grunt به عنوان task runner خود استفاده کنیم و از آنجایی که این بسته برای هدف توسعه مورد استفاده قرار می‌‌گیرد، پس از دستور زیر استفاده می‌کنیم:

npm install grunt --save-dev

این دستور، وابستگی Grunt را در بخش devDependencies  داخل package.json اضافه خواهد کرد. برای مثال:

{
 "name": "Testi",
 "version": "1.0.0",
 "description": "Single page application for FuLLKade",
 "main": "index.html",
 "scripts": {
..
 "author": "Hadi Akbarzadeh",
..
..,
 "devDependencies": {
 "gulp": "^3.8.11"
 }
}

 

Grunt
Grunt یک Task Runner جاوا اسکریپت است. در واقع یک ابزار برای انجام خودکار وظایف مکرر ی مانند minification (فشرده کردن فایل JS)، گردآوری، تست واحد، تجزیه و تحلیل (Linting) و …!
گرانت از یک رابط خط فرمان برای وظایف سفارشی تعریف شده در یک فایل (که به Gruntfile معروف است) استفاده می‌کند.

همچنین دستور زیر نیز برای نصب تمامی موارد devDependencies موجود در package.json استفاده می‌شود:

npm install --dev
دستور بالا منسوخ شده است

دستور جدید:
npm install --only=dev

استفاده از –save

برخلاف dev، برای نصب پکیجی جهت استفاده در محصول به کار می‌رود! مواردی از جمله angularjs یا سایر ماژول‌هایی که در کد اپلکییشین یا پکیج ما استفاده شده‌اند و برای اجرای آن ضرروری می‌باشند. مثال:

npm install angularjs --save

و package.json:

{
 "name": "Testi",
 "version": "1.0.0",
 "description": "Single page application for FuLLKade",
...,
 "dependencies":{
 "angularjs": "^1.4."
 },
 "devDependencies": {
 "gulp": "^3.8.11"
 }
}

همانطور که می‌بینید در devDependencies نصب نشده است. و در بخش dependencies اضافه شده است.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک