وقتی میخوایم برنامهای بنویسیم ممکنه نیاز داشته باشیم از کتابخونهها یا پکیجهایی استفاده کنیم. پکیج منیجرها ابزارهای مدیریت بستهها یا پکیجها هستن که برامون کارهای نصب، آپدیت، حذف و اجرای دستوراتی که در این زمینه نیاز داریم رو میدن! توی این مقاله میخوایم خیلی کوتاه و ساده npm، yarn و pnpm که سه تا از محبوبترین ابزارهای مدیریت بسته برای Node.js هستن رو مقایسه کنیم و بهترین ابزار رو با توجه به کارمون پیدا کنیم!
قدیمیترین و محبوبترین: NPM
اولین ابزار مدیریت پکیجها برای node.js هست و بصورت پیشفرض با node.js نصب میشه.
مشکلی که داره اینه که واسه پروژه های بزرگ سرعت نصب پایینی داره.
نمونه کد:
npm install <package-name> // نصب پکیج به صورت محلی npm update <package-name> // بهروزرسانی یک پکیج به آخرین نسخه npm uninstall <package-name> // حذف یک پکیج بصورت محلی npm run <script-name> // اجرای اسکریپتها
برای علاقه مندان به node.js: بررسی ویژگیهای جدید Node.js 23.0.0
دومین ابزار پراستفاده: yarn
این ابزار به عنوان جایگزین npm معرفی شده و سرعت بیشتری داره چون بستهها رو بصورت موازی نصب میکنه. امنیت بیشتری هم داره که وارد جزئیاتش نمیشیم و تجربه کاربری بهتری هم داره! یه ویژگی که yarn داره اسمش workspaces هست که اجازه کنترل چندین پروژه رو توی یه ریپازیتوری میده!
برای استفاده از yarn اول باید اونو نصب کنیم چون بصورت پیش فرض به همراه node.js نصب نمیشه. توی کد اول اونو بصورت سراسری(globally) روی سیستم نصب میکنیم:
npm install -g yarn // بصورت سراسری yarn نصب yarn add <package-name> // نصب پکیج به صورت محلی yarn upgrade <package-name> // بهروزرسانی یک پکیج به آخرین نسخه yarn remove <package-name> // حذف یک پکیج بصورت محلی yarn <script-name> // اجرای اسکریپتها
و سومین ابزار: pnpm
نسل جدیدتری از این ابزارهاست که سرعت بیشتری داره . حافظه کمتری رو اشغال میکنه و ویژگیهای پیشرفته تری هم داره. مثل monorepoها که یک روش سازماندهی کد هست که چندین پروژه مرتبط در یک repository نگهداری میشه. یا اینکه pnpm اجازه میده بستهها رو به صورت محلی نصب کنیم، یعنی از یه پوشه دیگه توی سیستم یا حتی از یه ریپازیتوی گیت.
مثل pnpm ,yarn هم بصورت پیش فرض نصب نمیشه و برای استفاده اول باید اونو نصب کنیم:
npm install -g yarn // بصورت سراسری yarn نصب pnpm add <package-name> // نصب پکیج به صورت محلی pnpm update <package-name> // بهروزرسانی یک پکیج به آخرین نسخه pnpm remove <package-name> // حذف یک پکیج بصورت محلی pnpm <script-name> // اجرای اسکریپتها
جزئیات مقایسه npm, yarn و pnpm:
برای افرادی که به این موضوعات آشنا ترن و میخوان دقیقتر تفاوتها رو پیگیری کنن هم تصویری رو گذاشتم که با جزئیات بیشتری مقایسه این ابزارها رو نشون میده:
صحبت آخر:
شبیه این مقاله: جاوااسکریپت یا تایپاسکریپت؟ راهنمای انتخاب
هیچکدوم از این ابزارها الزاما بهتر یا بدتر نیستن . اگه از npm استفاده میکنید و به ویژگیهای yarn نیازی ندارید لزومی نداره اونو تغییر بدید! اگه به سرعت بالاتری نیاز دارید yarn میتونه مناسب باشه و اگه پروژه بزرگی دارید pnpm میتونه قابلیتهای خیلی خوبی داشته باشه! پس روی هیچکدوم وسواسی نداشته باشید . و توی یه پروژه اگه ضرورتی نداره از چند ابزار مدیریت بسته بصورت همزمان استفاده نکنید چون ممکنه مشکلاتی ایجاد کنه!
سعی کردم بصورت خیلی خلاصه اطلاعاتی درمورد این package manager ها بهتون بدم . در آخر هم یه تصویر خلاصه برای مقایسه این سه ابزار گذاشتم برای کسانی که میخوان دقیقتر تفاوتها رو دنبال کنن. موفق باشید😉