ویرگول
ورودثبت نام
عرفان اسم خانی
عرفان اسم خانینیمچه برنامه نویس JS
عرفان اسم خانی
عرفان اسم خانی
خواندن ۲ دقیقه·۱ ماه پیش

NPM vs PNPM

میخواییم بدونیم از کدوم یک از پکیچ منیجر ها استفاده کنیم و تفاوت اونها در چیه ؟ و کدوم بهینه تره؟

📦 npm چیست؟

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


⚙️ pnpm چیست؟

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


💡 چرا از pnpm به جای npm استفاده کنیم؟

جوابش سادست 👇
فرض کنید ده تا پروژه روی کامپیوتر خودتون در دست توسعه دارید که از node modules استفاده می‌کنن.

⚠️ قطعاً بین این ده تا پروژه تعداد زیادی پکیج مشابه و مشترکه، اما اگر از npm استفاده کنید:

  1. همه‌ی پکیج‌ها توی هر یک از پروژه‌ها هر بار مجدداً نصب می‌شن و نتیجتاً شما پکیج‌های مشابه رو برای هر پروژه دوباره و دوباره دانلود می‌کنید.

  2. همچنین نهایتاً روی دیسک‌تون از هر پکیج مشترک ده تا کپی خواهید داشت که اصلاً بهینه نیست.

✅ حالا pnpm چیکار می‌کنه؟

میاد و به جای اینکه این ماژول‌ها رو هر بار توی فولدر هر پروژه ذخیره کنه، اون‌ها رو در یک دایرکتوری مرکزی (Content-Addressable Store) ذخیره می‌کنه و صرفاً به هر پروژه‌ای که به اون dependency نیاز داره لینک می‌زنه.

به این ترتیب:

  • فقط یک نسخه‌ی فیزیکی از هر پکیج روی دیسک نگهداری می‌شه.

  • پروژه‌ها از طریق symlink به اون نسخه‌ی مرکزی متصل می‌شن.

  • نصب پکیج‌ها بسیار سریع‌تر انجام می‌شه، چون نیازی به دانلود و کپی مجدد فایل‌ها نیست.

  • مصرف فضای دیسک به شکل قابل توجهی کاهش پیدا می‌کنه.


🧩 نتیجه‌گیری

اگر پروژه‌های کمی دارید و مدیریت ساده مدنظرتونه، npm کفایت می‌کنه.
اما اگر چندین پروژه دارید، به سرعت بالاتر نیاز دارید یا می‌خواهید از فضای دیسک بهینه‌تر استفاده کنید، pnpm انتخاب هوشمندانه‌تریه.

به طور خلاصه:

pnpm همون npm هست، فقط با مغزی هوشمندتر و مدیریت حافظه بهتر 😄

npm
۴
۰
عرفان اسم خانی
عرفان اسم خانی
نیمچه برنامه نویس JS
شاید از این پست‌ها خوشتان بیاید