post title

npm چیست؟ راهنمای نصب و مدیریت پکیج‌های جاوا اسکریپت

npm ابزار مدیریت بسته‌های جاوا اسکریپت است؛ با آن کتابخانه‌ها و ابزارهای پروژه را نصب، حذف و به‌روزرسانی می‌کنید. اما چرا بعد از نصب یک پکیج کوچک، ده‌ها پوشه جدید داخل پروژه ظاهر می‌شوند؟ پاسخ در وابستگی‌های نرم‌افزاری است؛ موضوعی که روی اجرای برنامه، حجم پروژه و امنیت آن اثر دارد. در این مقاله از […]

npm چیست؟ راهنمای نصب و مدیریت پکیج‌های جاوا اسکریپت

توییتر تلگرام

npm ابزار مدیریت بسته‌های جاوا اسکریپت است؛ با آن کتابخانه‌ها و ابزارهای پروژه را نصب، حذف و به‌روزرسانی می‌کنید. اما چرا بعد از نصب یک پکیج کوچک، ده‌ها پوشه جدید داخل پروژه ظاهر می‌شوند؟ پاسخ در وابستگی‌های نرم‌افزاری است؛ موضوعی که روی اجرای برنامه، حجم پروژه و امنیت آن اثر دارد.

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

npm چیست و چه کاربردی دارد؟

npm یک مدیر بسته یا Package Manager در اکوسیستم جاوا اسکریپت است. پکیج، مجموعه‌ای از کدها و فایل‌های قابل استفاده مجدد است؛ مثلا کتابخانه‌ای برای اعتبارسنجی فرم یا ابزاری برای ساخت خروجی نهایی سایت.

عبارت Node Package Manager را معمولا برای معرفی npm به‌کار می‌برند، اما نام رسمی محصول همان npm است. این محصول سه بخش اصلی دارد: وب‌سایت برای جستجوی پکیج‌ها، مخزن یا Registry برای نگهداری آن‌ها و ابزار خط فرمان برای مدیریت بسته‌ها. npm فقط مخصوص برنامه‌های سمت سرور نیست. پروژه‌های فرانت‌اند هم برای نصب ابزارهای توسعه، اجرای تست و ساخت فایل‌های نهایی از آن استفاده می‌کنند.  

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

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

npm مشخصات پروژه را در package.json، جزئیات درخت وابستگی‌ها را در package-lock.json و فایل‌های نصب محلی را معمولا در node_modules نگه می‌دارد. مخزن پیش‌فرض عمومی است، اما شرکت‌ها امکان استفاده از مخزن خصوصی را هم دارند. 

تفاوت npm و Node.js چیست؟

نود جی اس چیست؟ محیط اجرای جاوا اسکریپت خارج از مرورگر است؛ npm ابزار مدیریت بسته‌هاست. نصب یک کتابخانه با npm، معادل اجرای برنامه نیست.

جدول زیر نقش این دو را روشن می‌کند.

ابزار وظیفه نمونه استفاده
Node.js اجرای کد جاوا اسکریپت اجرای فایل app.js
npm نصب وابستگی‌ها و اجرای اسکریپت‌های پروژه نصب کتابخانه و اجرای تست

برای مثال، دستور node app.js کد برنامه را اجرا می‌کند؛ npm install وابستگی‌ها را نصب می‌کند. ابزار npm نیز برای کار کردن به محیط Node.js نیاز دارد.

تفاوت npm و Node.js چیست؟
آموزش نصب npm در ویندوز و لینوکس

در روش‌های رایج نصب Node.js، npm هم همراه آن نصب می‌شود. نسخه LTS پشتیبانی‌ شده را متناسب با نیاز پروژه انتخاب کنید؛ شماره نسخه آموزش‌های قدیمی را بدون بررسی تکرار نکنید. در ویندوز، فایل نصب رسمی Node.js را دریافت کنید و مراحل نصب را با فعال بودن npm و افزودن مسیر اجرایی به PATH ادامه دهید. پس از پایان، یک ترمینال جدید باز کنید.
آموزش نصب npm در ویندوز و لینوکس

در لینوکس، استفاده از مدیر نسخه‌ای مانند nvm برای مدیریت چند نسخه کاربرد دارد. پس از نصب nvm طبق راهنمای رسمی، دستور nvm install –lts نسخه LTS را نصب می‌کند. روش نصب nvm لینوکس با nvm-windows یکسان نیست. مستندات npm نیز استفاده از مدیر نسخه را توصیه می‌کند.  

۱. بررسی نسخه Node.js و npm

برای اطمینان از نصب، دو دستور زیر را جداگانه اجرا کنید:

  • node -v
  • npm -v

هر دستور باید شماره نسخه همان ابزار را نمایش دهد. شماره نسخه Node.js و npm یکسان نیست و نیازی هم به یکسان بودن آن‌ها ندارید.
بررسی نسخه Node.js و npm
اگر ترمینال دستور را نمی‌شناسد، ابتدا PATH و محل نصب را بررسی کنید. روش نصب Node.js و npm در انواع توزیع‌های لینوکس ممکن است متفاوت باشد. استفاده از مدیر نسخه‌ای مانند nvm برای مدیریت چند نسخه کاربرد دارد.

آموزش کار با npm در پروژه‌های جاوا اسکریپت

برای تمرین، پوشه‌ای خالی بسازید و ترمینال را داخل آن باز کنید. دستورات این بخش فایل‌های همان پوشه را تغییر می‌دهند؛ مسیر جاری را پیش از اجرا بررسی کنید.

۱. ساخت پروژه با npm init

دستور npm init درباره نام، نسخه و مشخصات پروژه سوال می‌پرسد و فایل package.json را می‌سازد. برای پذیرش مقادیر پیش‌فرض، npm init -y را اجرا کنید. این دستور فایل اصلی برنامه یا یک سایت کامل نمی‌سازد؛ فقط اطلاعات اولیه بسته را ثبت می‌کند. نام پروژه را مثلا npm-demo بگذارید.

۲. نصب پکیج با npm install

برای نصب یک کتابخانه نمونه، دستور npm install lodash را اجرا کنید. npm بسته و وابستگی‌های لازم را دریافت می‌کند و فایل‌های مدیریت وابستگی را به‌روز می‌کند.
نصب پکیج با npm install
با دستور npm ls lodash بررسی کنید کتابخانه در پروژه حضور دارد. برای استفاده از آن در یک آزمایش کوتاه، این دستور را اجرا کنید:

node -e “console.log(require(‘lodash’).chunk([1,2,3,4],2))”

خروجی، آرایه را به دو گروه دوتایی تقسیم می‌کند. این مثال، نصب و استفاده از پکیج را نشان می‌دهد؛ عملکرد npm به دانلود فایل محدود نیست.

۳. تفاوت نصب Local و Global

نصب محلی، بسته را در محدوده همان پروژه قرار می‌دهد. برای کتابخانه‌های برنامه، این روش مناسب است؛ اعضای تیم نیز نسخه مورد نیاز را از اطلاعات پروژه دریافت می‌کنند. نصب سراسری با پرچم -g، مثلا npm install -g typescript، بیشتر برای ابزارهای خط فرمان کاربرد دارد. نصب Global به‌معنی ثبت وابستگی در پروژه یا دسترسی همه کاربران سیستم نیست؛ محل نصب به تنظیمات محیط مربوط است.

۴. حذف و به‌روزرسانی پکیج‌ها

دستور npm uninstall lodash بسته را حذف می‌کند و اطلاعات وابستگی را اصلاح می‌کند. برای بررسی نسخه‌های قدیمی، npm outdated را اجرا کنید. دستور npm update بسته‌ها را در محدوده نسخه مجاز پروژه به‌روز می‌کند؛ لزوما جدیدترین نسخه اصلی را نصب نمی‌کند. تغییر نسخه اصلی ممکن است به اصلاح کد نیاز داشته باشد، پس پس از به‌روزرسانی تست‌ها را اجرا کنید.  

مهم‌ترین دستورات npm و کاربرد آن‌ها

به‌جای حفظ کردن همه دستورات، ابتدا کاربرد ۱۰ دستور اصلی زیر را بشناسید.

دستور کاربرد
npm init -y ساخت package.json با مقادیر پیش‌فرض
npm install نصب وابستگی‌های پروژه
npm install lodash افزودن یک پکیج مشخص
npm uninstall lodash حذف پکیج
npm update به‌روزرسانی در محدوده مجاز نسخه‌ها
npm outdated نمایش بسته‌های قدیمی
npm ls –depth=0 نمایش وابستگی‌های سطح اول
npm run build اجرای اسکریپت build تعریف‌شده در پروژه
npm ci نصب پاک و مبتنی بر فایل قفل
npm audit بررسی آسیب‌پذیری‌های شناخته‌شده وابستگی‌ها

دستور npm run build فقط وقتی کار می‌کند که پروژه اسکریپتی با نام build داشته باشد. npm برای تمام پروژه‌ها فرمان ساخت یکسانی تعریف نمی‌کند.

فایل package.json چیست و چه کاربردی دارد؟

فایل package.json شناسنامه پروژه است. نام، نسخه، اسکریپت‌ها و وابستگی‌ها را در این فایل نگه می‌دارید. برای خواندن آن، فایل را در ویرایشگر باز کنید.

بخش‌های پرکاربرد آن عبارت‌اند از:

  • name و version: نام و نسخه پروژه
  • scripts: فرمان‌های توسعه، تست یا ساخت
  • dependencies: بسته‌های مورد نیاز برنامه
  • devDependencies: ابزارهای توسعه و ساخت

برای نصب ابزار قالب‌بندی در بخش توسعه، npm install –save-dev prettier را اجرا کنید. کتابخانه‌ای که برنامه هنگام اجرا به آن نیاز دارد، معمولا در dependencies قرار می‌گیرد. ابزارهای devDependencies گاهی برای ساخت خروجی نهایی ضروری‌اند؛ بنابراین حذف آن‌ها پیش از مرحله build ممکن است ساخت پروژه را متوقف کند.
فایل package.json چیست و چه کاربردی دارد؟

تفاوت package.json و package-lock.json چیست؟

package.json نیازهای پروژه و محدوده نسخه‌ها را توصیف می‌کند؛ package-lock.json جزئیات نسخه‌های انتخابی و درخت نصب را ثبت می‌کند. فایل قفل را همراه پروژه در گیت نگه دارید. اگر پروژه را در گیت هاب نگه می‌دارید، فایل package-lock.json را هم همراه کد ثبت کنید تا اعضای تیم به نسخه‌های مشخص وابستگی‌ها دسترسی داشته باشند.

مستندات رسمی npm درباره این فایل می‌گوید:

“This file is intended to be committed into source repositories, and serves various purposes:” «این فایل برای ثبت در مخزن کد منبع در نظر گرفته شده است و کاربردهای مختلفی دارد.»  

برای نصب در فرایند استقرار، npm ci به فایل قفل موجود نیاز دارد. اگر وابستگی‌های آن با package.json هماهنگ نباشند، دستور خطا می‌دهد. همچنین node_modules قبلی را حذف می‌کند و نصب تازه انجام می‌دهد.
تفاوت package.json و package-lock.json چیست؟
فایل قفل، جای ثبت نسخه Node.js و تنظیمات محیط را نمی‌گیرد. رفتار برنامه ممکن است با سیستم عامل یا وابستگی‌های بومی متفاوت باشد. 

پوشه node_modules چیست؟

پوشه node_modules محل معمول نگهداری بسته‌های نصب محلی و وابستگی‌های آن‌هاست. این پوشه ممکن است بسیار بزرگ‌تر از کد خود پروژه باشد. معمولا node_modules را وارد گیت نمی‌کنند؛ اعضای تیم با فایل‌های package و دستور نصب، وابستگی‌ها را بازسازی می‌کنند. فایل‌های داخل آن را مستقیم ویرایش نکنید، چون نصب بعدی تغییرات را از بین می‌برد.
پوشه node_modules چیست؟

تفاوت npm و npx چیست؟

npm ابزار مدیریت بسته‌هاست؛ npx بیشتر برای اجرای ابزارهای بسته‌ها کاربرد دارد و در نسخه‌های جدید بر npm exec تکیه می‌کند. مثلا پس از نصب محلی Prettier، دستور npx prettier –version نسخه ابزار را نمایش می‌دهد. اگر بسته مورد نیاز در دسترس نباشد، npx ممکن است پیشنهاد دریافت آن را بدهد و از کش استفاده کند.

پس npx همیشه «اجرا بدون دانلود» نیست. نام بسته و نسخه را بررسی کنید؛ اجرای یک ابزار ناشناس، همچنان اجرای کد روی دستگاه شماست.   

تفاوت npm و Yarn و pnpm

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

ابزار ویژگی شاخص فایل قفل رایج
npm همراه روش‌های رایج نصب Node.js package-lock.json
Yarn پشتیبانی از Plug’n’Play و روش‌های دیگر نصب yarn.lock
pnpm مخزن محتوایی مشترک و پیوندهای فایل pnpm-lock.yaml

pnpm با استفاده مجدد از محتوای بسته‌ها، مصرف فضای تکراری را کاهش می‌دهد. Yarn در حالت PnP به‌جای node_modules سنتی، از سازوکار بارگذاری مخصوص استفاده می‌کند؛ حالت node_modules را هم پشتیبانی می‌کند.

سرعت نصب به پروژه، کش، دیسک و نسخه ابزار مربوط است. مدیر بسته مورد توافق تیم را نگه دارید و فایل‌های قفل ابزارهای مختلف را بی‌برنامه مخلوط نکنید.  

خطاهای رایج npm و روش رفع آن‌ها

پیش از تغییر تنظیمات، متن خطا و فایل لاگ را بخوانید. این خطاها علت یکسانی ندارند:

  • EACCES یا EPERM: مجوز پوشه، مالکیت فایل یا قفل بودن آن را بررسی کنید.
  • ERESOLVE: سازگاری نسخه‌ها و peerDependencies را بررسی کنید.
  • ENOENT: مسیر جاری و وجود فایل مورد انتظار را کنترل کنید.
  • خطای شبکه: اتصال، پراکسی، مخزن و گواهی‌های معتبر را بررسی کنید.

استفاده از مدیر نسخه Node.js مانند nvm، نصب و مدیریت نسخه‌ها را بدون نیاز به دسترسی مدیریتی ساده‌تر می‌کند. همچنین، پیش از اجرای دستورهای –force یا –legacy-peer-deps، علت ناسازگاری وابستگی‌ها را بررسی کنید؛ زیرا این گزینه‌ها ممکن است مشکلات سازگاری را پنهان کنند. برای رفع خطاهای اتصال نیز، بررسی تنظیمات شبکه و گواهی‌های امنیتی ضروری است و غیرفعال‌ کردن اعتبارسنجی TLS راهکار صحیح و مطمئنی نیست.

نکات امنیتی هنگام نصب پکیج‌های npm

نصب بسته ممکن است کد اجرایی وارد محیط شما کند. نام دقیق، مخزن کد، نگهدارنده و تغییرات نسخه را پیش از افزودن وابستگی بررسی کنید؛ نام‌های بسیار شبیه به بسته معروف، گاهی دام‌اند. دستور npm audit آسیب‌پذیری‌های شناخته‌شده را گزارش می‌کند، اما نبود گزارش، سلامت کامل بسته را ثابت نمی‌کند. اصلاح خودکار با npm audit fix –force هم ممکن است تغییر ناسازگار ایجاد کند. اسکریپت‌های نصب، مطابق نسخه و سیاست npm، امکان اجرا دارند. پرچم –ignore-scripts اجرای اسکریپت‌های نصب را متوقف می‌کند، اما ممکن است نصب بعضی بسته‌ها ناقص بماند؛ همچنین مانع اجرای صریح npm run نمی‌شود.

پیش از خرید هاست nodejs از پارس هاست، نسخه مورد نیاز پروژه، روش استقرار و دسترسی نصب بسته‌ها را با مشخصات سرویس تطبیق دهید و موارد مبهم را از پشتیبانی بپرسید.  اگر پروژه را روی سرور اجرا می‌کنید، مدیریت وابستگی‌ها را در کنار اصول امنیت سرور دنبال کنید؛ نصب بسته با حداقل دسترسی و حفاظت از توکن‌های مخزن نیز اهمیت دارند.

پیش از استقرار، نصب پروژه را دوباره آزمایش کنید

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

سوالات متداول درباره npm

۱. npm چیست و آیا رایگان است؟

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

۲. برای نصب پکیج عمومی، حساب npm لازم است؟

معمولا خیر. دریافت بسته عمومی به ورود نیاز ندارد؛ انتشار بسته یا دسترسی به مخزن خصوصی ممکن است احراز هویت بخواهد.

۳. بعد از حذف node_modules چه اتفاقی می‌افتد؟

بسته‌های محلی حذف می‌شوند. با فایل قفل هماهنگ، npm ci آن‌ها را دوباره نصب می‌کند؛ تغییرات دستی داخل پوشه برنمی‌گردند. 

مطالب پیشنهادی

نصب Node.js اولین قدم برای اجرای کدهای جاوا اسکریپت خارج از مرورگر و ساخت برنامه‌های سمت سرور است. برای نصب این محیط، باید نسخه مناسب سیستم‌ عامل خود را دانلود کنید یا سراغ ابزارهایی مثل NVM بروید که مدیریت چند نسخه را ساده‌تر می‌کنند. اما کدام روش بهتر است؟ اگر تازه برنامه‌نویسی را شروع کرده‌اید، […]

۲۰۲۶/۱۱/۰۸
۰

تفاوت این سه سیستم در معماری و کاربرد اصلی آن‌هاست: MySQL گزینه‌ای سبک و بهینه برای وب‌سایت‌های استاندارد و بارهای کاری متکی‌بر خواندن اطلاعات است؛ PostgreSQL سیستمی متن باز و قدرتمند برای محاسبات تحلیلی پیچیده، نوشتن‌های هم‌زمان و داده‌های بدون ساختار محسوب می‌شود و SQL Server راهکاری تجاری با هماهنگی کامل در اکوسیستم ویندوز و […]

۲۰۲۶/۱۱/۰۱
۰

MongoDB یک پایگاه داده NoSQL سند محور است که اطلاعات را در قالب سندهایی شبیه JSON نگه می‌دارد. این ساختار برای برنامه‌هایی کاربرد دارد که داده‌های متنوع دارند و نیازهایشان مرتب تغییر می‌کند. اما انعطاف بیشتر به‌معنی کنارگذاشتن طراحی دیتابیس نیست؛ اتفاقا مدل اشتباه، هزینه خود را هنگام افزایش داده‌ها نشان می‌دهد. در این مقاله […]

۲۰۲۶/۱۰/۲۸
۰

برای نصب MongoDB روی ویندوز، ابتدا نسخه سازگار با سیستم‌ عامل خود را دانلود کنید، فایل نصب Community Server را اجرا کنید و سپس با MongoDB Compass یا mongosh به دیتابیس متصل شوید. البته نسخه‌های جدید MongoDB Server از ویندوز ۱۰ پشتیبانی رسمی ندارند و برای نصب روی این سیستم‌ عامل باید محدودیت سازگاری نسخه‌ها […]

۲۰۲۶/۱۰/۲۷
۰

یک فروشگاه اینترنتی برای نمایش محصولات، ورود کاربران و ثبت سفارش با پایگاه داده ارتباط دارد. اگر برنامه ورودی کاربران را بدون جداسازی از دستورهای SQL وارد پرس‌وجو کند، مهاجم ممکن است منطق درخواست را تغییر دهد. این آسیب‌پذیری را SQL Injection یا تزریق SQL می‌نامند. برای درک اینکه SQL Injection چیست، باید تفاوت «داده […]

۲۰۲۶/۱۰/۲۷
۰
۰ نظر

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