30 روز با Node - روز هفتم: مدیریت پکیج (npm) در نود جی اس

22 مرداد 1397
Nodejs-npm

مقدمه

NPM یا مدیر پکیج نود (Node Package Manage)، همان نطور که از نامش پیداست، وظیفه مدیریت فایلها را برای اپلیکیشن‌های نود جی اس بر عهده دارد. این ابزار به شما کمک می کند تا بسته های نرم افزاری مورد نیاز را نصب، بروزرسانی، حذف و منتشر کنید. همانطور که در روز اول گفتیم، اکوسیستم پکیج نود جی اس، بزرگترین اکوسیستم کتابخانه آنلاین متن باز دنیاست. اصلا نیازی نیست به خودتان زحمت نوشتن مجدد کدی که قبلا نوشته شده را بدهید. بجای اتلاف وقت و اختراع مجدد چرخ(!) بر روی حل مسایل تمرکز کنید.

نصب NPM

نصب خودکار NPM: وقتی نود جی اس را دانلود می کنید، NPM هم بصورت خودکار نصب خواهد شد. از (اینجا) می توانید نود جی اس را دانلود کنید.

نصب دستی NPM: از لینک زیر فایل NPM را دانلود کنید:

https://registry.npmjs.org/npm/-/npm-{version}.tgz

آنچه باید انجام دهید این است که شماره نسخه دلخواه را در آن ذکر کنید، مثلا:

https://registry.npmjs.org/npm/-/npm-5.4.2.tgz

نکته: نصب دستی برای تازه کارها پیشنهاد نمی شود.

بروزرسانی NPM

بروزرسانی های NPM دائما درحال انتشارند و خوب نیست که ما هر بار نود جی اس را فقط بخاطر بروزرسانی هایش دانلود کنیم. درعین حال باید مطمئن باشیم که از آخرین نسخه NPM استفاده می کنیم. بنابراین برای بروزرسانی NPM از دستور زیر استفاده می کنیم:

 >npm install npm@latest -g

نکته: برای اطلاع از نسخه NPM درحال اجرا، دستور زیر را وارد کنید:

 >npm -v

package.json چیست؟

  • شیوه ای است برای مدیریت بسته هایی که بصورت محلی نصب شده اند.
  • بعنوان مستندات برای وابستگی های پروژه ما کار می کند و هر آنچه از بسته npm دریافت کردیم را درون خود نمایش می دهد.
  • نوعی دایرکتوری است حاوی ردپای همه وابستگیهایی که پروژه ما از آنها استفاده می کند.
  • به ما اجازه می دهد که نسخه‌های بسته های نرم افزاری مورد استفاده در پروژه را مشخص کنیم.

ایجاد package.json: این کار با استفاده از دستور زیر انجام می شود:

>npm init
 
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
 
See `npm help json` for definitive documentation on these fields
and exactly what they do.
 
Use `npm install ` afterwards to install a package and
save it as a dependency in the package.json file.
 

Press ^C at any time to quit.

package name: (nodejsera)

version: (1.0.0)

description:

entry point: (arrays.js)

test command:

git repository:

keywords:

author: @rajatgarian

license: (ISC)

About to write to \package.json:


{

  "name": "scripts",

  "version": "1.0.0",

  "description": "",

  "main": "arrays.js",

  "dependencies": {

    "body-parser": "^1.17.2",

    "express": "^4.15.4",

    "ejs": "^2.5.7",

    "express-fileupload": "^0.1.4",

    "nodemailer": "^4.1.0",

    "natural": "^0.5.4",

    "prettyjson": "^1.2.1"

  },

  "devDependencies": {},

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "@rajatgarian",

  "license": "ISC"

}


Is this ok? (yes) yes

در مجموعه کدهای فوق یک سری مشخصات نرم افزار از شما پرسیده می شود که پاسخ دادن به آنها اختیاری است. از طرفی می توانید بصورت زیر دستور فوق را وارد کنید تا بصورت خودکار ادامه دهد:

npm init --yes                       

نصب npm

چنانچه فایل package.json را در پروژه داشته باشیم، می توانیم تمام وابستگیها را تنها با دستور npm install نصب کنیم.

 >npm install

این دستور تمام وابستگی هایی را که در فایل package.json نام برده شده، نصب خواهد کرد.

نصب بسته های نرم افزاری از طریق NPM

در npm، به دو روش می توان پکیج را نصب نمود:

1) محلی (نصب محلی): زمانی پکیج را بصورت محلی نصب می کنیم که نیاز داریم آنها را در اپلیکیشن خودمان require کنیم. بعنوان مثال، express، gannet و غیره. نحوه دستور نویسی برای دانلود یک پکیج بصورت محلی بصورت npn install <package name> است.

 >npm install gannit

این دستور یک پوشه/دایرکتوری در پوشه فعلی شما به نام node modules ایجاد می کند (البته اگر از قبل ایجاد نشده باشد) و پکیج را در آن دانلود می کند.
آزمایش: اگر پوشه node modules از قبل وجود نداشته باشد و با اجرای دستور نصب فوق، ایجاد شده باشد، می توان نتیجه گرفت که دستور npm install کار کرده است.

۲) سراسری (نصب سراسری): زمانی یک پکیج را به صورت سراسری نصب می کنیم که بخواهیم از آن به عنوان ابزار خط فرمان استفاده کنیم یا آن را در پس زمینه اجرا نماییم. برخی از این ابزارها که به صورت global یا سراسری نصب می شوند عبارتند از: forever، grunt-cli و غیره.

نحوه دستور نویسی سراسری به صورت زیر می باشد:

npn install –g <package name>

به عنوان مثال برای نصب پکیج forever از دستور زیر استفاده می کنیم:

>npm install -g forever

و کار تمام است، پکیج دانلود شده و آماده استفاده است.

نصب یک نسخه مشخص از پکیج

شماره نسخه را دقیقا می دانید: چنانچه شماره نسخه پکیج npm دلخواه را بصورت دقیق می دانید، آن را به همراه یک علامت @ پس از نام بسته نرم افزاری ذکر کنید:

 >npm install express@4.15.1

شماره نسخه را  حدودا می دانید: فرض کنید شماره نسخه پکیج را نمی دانید ولی شماره محدوده نسخه را می دانید. مثلا محدوده نسخه 4. در این صورت رقم اصلی شماره نسخه 4 است و برای نصب آخرین نسخه از آن محدوده، دستور را بصورت npm install package_name@^major_version.0.0 وارد کنید. مثلا:

>npm install express@^4.0.0

بروزرسانی یک پکیج

بروزرسانی یک بسته محلی: بسته ها باید دائما بروز باشند تا کد پروژه ما هم بروز باشد. نحوه دستور نویسی برای بروزرسانی یک بسته محلی بصورت npm update است:

 >npm update 

نکته: این دستور را در همان پوشه ای که package.json نگهداری می شود، اجرا کنید.

آزمایش: برای آزمایش اینکه دستور npm update کار کرده یا خیر، دستور npm outdated را وارد کنید. چنانچه چیزی در خروجی کنسول مشاهده نکردید، به معنای بروز بودن همه بسته‌های نرم افزاری است.

>npm outdated

بروزرسانی پکیج سراسری: نحوه دستور نویسی برای بروزرسانی یک پکیج سراسری به صورت زیر است:

npm install -g < package_name>

.مثلا:

>npm install -g forever

پیدا کردن بسته ‌های نرم افزاری سراسری بروز نشده: نحوه دستور نویسی برای پکیج سراسری به صورت زیر می باشد:

npm outdated -g --depth=0

مثلا:

>npm outdated -g --depth=0
Package             Current   Wanted   Latest  Location
@angular/cli          1.1.3    1.4.2    1.4.2  xyz
babel                 6.5.2   6.23.0   6.23.0  xyz
babel-cli            6.18.0   6.26.0   6.26.0  xyz
nodemon              1.11.0   1.12.1   1.12.1  xyz
sails                0.11.0  0.12.13  0.12.13  xyz
webpack              1.13.3    3.6.0    3.6.0  xyz
webpack-dev-server   1.16.2    2.8.2    2.8.2  xyz

جزئیات ستونهای خروجی دستور فوق به شرح زیر است:

  • Package:  نام پکیج
  • Current: نسخه نصب شده موجود
  • Wanted: آخرین شماره نسخه ای که در فایل package.json برای کلید semver ذکر شده است.
  • Latest: شماره آخرین نسخه موجود
  • Location: محل نصب پکیج نصب شده

بروزرسانی همه بسته های نرم افزاری (سراسری): تمام بسته های نرم افزاری سراسری را تنها با یک دستور بروزرسانی می‌کنیم:

>npm update –g

حذف یک پکیج

همانند بخش قبلی، در npm دو روش حذف پکیج موجود است، محلی و سراسری. اجازه دهید هر کدام را جداگانه بررسی کنیم:

حذف پکیج محلی: زمانی که دیگر به یک پکیج در اپلیکشن خودمان نیازی نداشته باشیم، آن را حذف می کنیم. نحوه دستور نویسی هم بصورت npm uninstall < package_name > است.

>npm uninstall gannit

همچنین به کمک دستور زیر، آن را از package.json حذف می کنیم:

>npm uninstall --save gannit

و چنانچه بسته ای را به کمک دستور devDependency نصب کرده باشیم، به کمک دستور زیر آن را حذف می کنیم:

 
>npm uninstall --save-dev gannit

این دستور، پکیج را از پوشه node_modules حذف خواهد کرد.

آزمایش: چنانچه پس از اجرای دستور حذف پکیج، پوشه آن را در node_modules مشاهده نکردید، بدین معنی است که دستور npn uninstall کار کرده است.

حذف پکیج سراسری: بصورت بسیار ساده  به کمک npm uninstall –g <package_name> این کرا را انجام می دهیم. مثلا:

>npm uninstall -g forever

به همین سادگی، پکیج سراسری حذف شد.

خلاصه

در این مقاله، ما اصول پایه ای در npm را فراگرفتیم. اینکه چگونه پکیج را از npm بصورت محلی و سراسری نصب، بروزرسانی یا حذف کنیم.

نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.