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

توسعه دهندگانی که به‌صورت منبع باز کار می‌کنند از npm برای به اشتراک گذاری نرم افزارها استفاده می‌کنند. همچنین بسیاری از سازمان‌ها نیز در مدیریت توسعه خصوصی نرم افزارهای خود از npm استفاده می‌کنند.

npm از دو بخش اصلی تشکیل شده است:

۱- یک مخزن آنلاین برای انتشار پروژه‌های منبع باز Node.js و میزبانی بسته‌های جاوا اسکریپت می‌باشد. که جامعه node.js در سراسر جهان ماژول‌های مفیدی ایجاد می‌کنند و آنها را به صورت پکیج در این مخزن منتشر می‌کنند.

۲- یک ابزار CLI (واسط خط فرمان) که با مخزن مذکور برای نصب پکیج‌ها، مدیریت نسخه، و مدیریت وابستگی‌ها تعامل می‌کند.

در واقع می‌توان مخزن npm را به عنوان یک انبار بزرگ در نظر گرفت که کالاها را از فروشندگان(نویسندگان پکیج npm) دریافت می‌کند و آنها را بین خریداران(کاربران پکیج npm) توزیع می‌کند. چیزی شبیه به تصویر زیر که ابتدا توسعه دهندگان، پکیج‌های npm را در مخزن آنلاین منتشر می‌کنند و از طرف دیگر کاربرانی که می‌خواهند در پروژه‌های خود از آن پکیج‌ها استفاده کنند از طریق خط فرمان (npm CLI) آنها را نصب و مدیریت می‌کنند:

انتشار پکیج در مخزن npmjs.com
نصب پکیج از مخزن npmjs.com به وسیله خط فرمان

بنابراین تعداد زیادی از کتابخانه‌ها و برنامه‌های Node.js توسط جامعه پشتیان در npm منتشر می‌شوند، که می‌توانید آنها را از سایت mpmjs.com جستجو کنید.

نصب npm

همانطور که بیان شد، npm به عنوان پکیج منیجر برای نود‌جی‌اس می‌باشد و به همراه Node.js نصب می‌شود. این بدان معناست که شما ابتدا باید Node.js را نصب کرده باشید تا npm هم روی رایانه شما نصب شود. برای نصب نود‌جی‌اس به مقاله نوشته شده در فینگ با عنوان آموزش نصب Node.js مراجعه کنید.

با وارد کردن دستور زیر در ترمینال یا خط فرمان، نصب npm را تایید کنید:

$ npm -v

اگر نسخه npm تان قدیمی است، می‌توانید با استفاده از دستور زیر آن را به آخرین نسخه به روز کنید:

$ npm install npm -g

npm چگونه کار می‌کند؟

npm عملیات نصب و مدیریت پکیج‌ها را به دو صورت سراسری(global) و محلی(local) انجام می‌دهد. در روش سراسری پکیج بر روی کامپیوتر شما نصب خواهد شد و در همه‌ی پروژه‌های node.js که در رایانه خود دارید قابل استفاده خواهد بود. اما در روش محلی برای هر پروژه بصورت جداگانه نصب و استفاده می‌شود.

نصب پکیج به‌صورت محلی

برای نصب هر ماژول در برنامه node.js خود، وارد مسیر اصلی پروژه شده و به عنوان مثال پکیج express را با دستور زیر نصب کنید:

$ npm install express

تمام ماژول‌هایی که به وسیله npm نصب می‌شوند، در پوشه node_modules قرار می‌گیرند. در مثالی که بیان شد، با اجرای دستور بالا پوشه express در داخل پوشه node_modules در مسیر اصلی پروژه شما ایجاد می‌شود.

اضافه کردن وابستگی‌ها به فایل package.json

npm برای مدیریت پکیج‌های محلی یک پرژه، از فایلی به نام package.json استفاده می‌کند. برای افزودن وابستگی‌ها(dependencies) به فایل package.json برنامه خود، از پرچم save– استفاده کنید.

به عنوان مثال، دستور زیر express را در برنامه شما نصب کرده و آن را در فایل package.json در بخش dependencies اضافه می‌کند:

$ npm install express --save

فایل package.json پروژه شما به شکل زیر خواهد بود:

{
 "name": "yourNodeProj",
 "version": "1.0.0",
 "main": "index.js",
 "license": "MIT",
 "scripts": {
   "dev": "nodemon -w ./ index.js",
 },
 "dependencies": {
   ...,
   "express": "^4.17.2",
 }
}

نصب پکیج به صورت سراسری

npm همچنین می‌تواند پکیج‌ها را به صورت سراسری نصب کند تا همه برنامه‌های node.js که در رایانه خود دارید، بتوانند پکیج‌های نصب شده را وارد کرده و از آنها استفاده کنند.

برای نصب پکیج به صورت سراسری، از پرچم g در دستور install استفاده کنید، به عنوان مثال، دستور زیر express را به صورت سراسری نصب می‌کند:

$ npm install -g express

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

برای به‌روز رسانی پکیج نصب شده به صورت محلی در پروژه Node.js خود، خط فرمان یا ترمینال را باز کرده و در مسیر اصلی پروژه خود دستور update را وارد کنید:

$ npm update express

حذف پکیج نصب شده

برای حذف کردن یک پکیج از پروژه خود به‌ صورت محلی، از دستور uninstall به شکل زیر عمل کنید:

$ npm uninstall express

برای آگاهی از دیگر دستورات npm و نحوه عملکرد آنها، می‌توانید ترمینال خود را باز کرده و دستور زیر را وارد کنید:

$ npm help
Usage:
npm install <foo>  add the <foo> dependency to your project
npm test           run this project's tests
npm run <foo>      run the script named <foo>
npm -l             display usage info for all commands
All commands:
  access, adduser, audit, bin, bugs, cache, ci, completion,
  config, dedupe, deprecate, diff, dist-tag, docs, doctor,
  edit, exec, explain, explore, find-dupes, fund, get, help,
  hook, init, install, install-ci-test, install-test, link,
  ll, login, logout, ls, org, outdated, owner, pack, ping,
  pkg, prefix, profile, prune, publish, rebuild, repo,
  restart, root, run-script, search, set, set-script,
  shrinkwrap, star, stars, start, stop, team, test, token,
  uninstall, unpublish, unstar, update, version, view, whoami
...