تفاوت npm و Yarn و pnpm
در دنیای JavaScript سه پکیجمنیجر محبوب وجود دارد:
- npm : Node Package Managers
- Yarn : Yet Another Resource Negotiator
- pnpm : Performant Node Package Manager
این ابزارها مسئول نصب، مدیریت و نگهداری وابستگیهای پروژه هستند.
npm
خب npm پکیج منیجر پیشفرض Node.js ـه.
یعنی Node رو نصب کنی، npm هم باهاش میاد
ویژگیها:
- استاندارد و رایجترین گزینه
- دارای فایل قفل: package-lock.json
- پشتیبانی از Workspaces
- سازگاری بسیار بالا با اکوسیستم
مزایا:
- همیشه در دسترس
- ساده و قابل اعتماد
معایب:
- در برخی پروژهها سرعت و مصرف دیسک بیشتر نسبت به pnpm
Yarn
خب Yarn برای بهبود سرعت و مدیریت بهتر وابستگیها ایجاد شد توسط Facebook (Meta) برای رفع مشکلات npm
ویژگیها:
- فایل قفل: yarn.lock
- دارای نسخه Classic (v1) و Berry (v2+)
- مدیریت قوی Workspaces
مزایا:
- مناسب پروژههای تیمی بزرگ (monorepo)
- سریعتر از npm
- لاک فایل پایدارتر
معایب:
- تفاوت زیاد بین نسخهها ممکن است گیجکننده باشد چون نیاز به نصب جداگانه دارد
pnpm
خب pnpm تمرکز ویژهای روی سرعت و مصرف کم فضای دیسک دارد و نمیزاره پکیچ های تکراری در هر پروژه دوباره نصب شوند اون پکیج ها
ویژگیها:
- فایل قفل: pnpm-lock.yaml
- استفاده از global store
- اتصال پکیجها با لینک به جای کپی کامل
مزایا:
- مصرف بسیار کمتر فضای دیسک
- سرعت نصب بالا
- ساختار وابستگی سختگیرانهتر و امنتر
معایب:
- ممکن است پروژههای قدیمی که وابستگیهای ضمنی دارند خطا بدهند
تفاوت در ساختار node_modules
npm / Yarn
پکیجها معمولاً کپی میشوند و Hoisting زیاد انجام میشود.
pnpm
پکیجها در یک storage مرکزی ذخیره شده و با لینک متصل میشوند. ساختار دقیقتر و وابستگیها شفافتر هستند.
دستورات معادل
کار npm yarn pnpm
نصب وابستگیها
- npm install
- yarn install
- pnpm install
اضافه کردن پکیج
- npm install axios
- yarn add axios
- pnpm add axios
حذف پکیج
- npm remove axios
- yarn remove axios
- pnpm remove axios
اجرای اسکریپت
- npm run dev
- yarn dev
- pnpm dev
جمعبندی
- اگر سادهترین و استانداردترین گزینه را میخواهید → npm
- اگر Workspaces و monorepo مهم است → Yarn
- اگر سرعت، نظم وابستگیها و مصرف کم دیسک مهم است → pnpm