چرا باید از pnpm استفاده کنیم؟ آموزش نصب و شروع به کار


داشتم با خودم کلی فکر میکردم، اولین مقاله سایتم چی باشه، چی نباشه که یکی از دوستانم اومد گفت " آقا pnpm که گفته بودی واقعا جوابه "، گفتم چقدر کمال گرایی آزاد! بیا همینو یه آموزش بده و بزن تو سایت که این بن بست ذهنیت برای تولید محتوا تو بلاگ شخصیت از بین بره . خب خب بریم سر اصل مطلب.


مدیریت پکیج‌ها یکی از ارکان اصلی توسعه‌ی نرم‌افزارهای مبتنی بر زبان جاوا اسکریپت هست. ابزارهایی مانند npm و yarn سال‌هاست که در این مسیر به ما کمک کردند. اما در سال‌های اخیر، ابزار جدیدی به نام pnpm وارد میدان شده که با وعده‌ی سرعت بیشتر، استفاده‌ی بهینه‌تر از فضا و معماری متفاوت، توجه توسعه‌دهندگان ( مخصوصا خود من ) زیادی را جلب کرده است.

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

# pnpm چیست؟

pnpm مخفف "Performant npm" است. این ابزار یک جایگزین سریع‌تر و کارآمدتر برای npm و yarn محسوب می‌شود که با رویکردی متفاوت نسبت به مدیریت پکیج‌ها عمل می‌کند. مهم‌ترین ویژگی pnpm، استفاده از ساختار لینک سخت (hard links) به جای کپی کردن پکیج‌ها در پروژه‌هاست.

برخلاف npm، در pnpm تمام پکیج‌ها فقط یک بار در کش محلی سیستم نصب می‌شوند و سپس در پروژه‌های مختلف به واسطه hard links متصل می‌شوند. 

این یعنی سرعت بالا و کاهش مصرف فضای دیسک!


# نصب pnpm

نصب این مدیریت کننده پکیج جذاب زیاد سخت نیست و خیلی راحت با خود npm میتونید به صورت عمومی ( Global ) در رایانه خودتون نصب کنید :

npm install -g pnpm

پس از نصب، با دستور زیر می‌توانید مطمئن شوید که pnpm نصب شده و در حال استفاده کدوم نسخه اش هستید :

pnpm -v


# استفاده از pnpm

از نظر ساختار دستوری در خط فرمان تفاوت زیادی در pnpm و npm نیست و میتوانید اکثر دستورات npm رو به همون شکل اجرا کنید، مثلا نمونه دستورات : 

ایجاد پروژه جدید:

pnpm init

افزودن یک وابستگی به پروژه :

pnpm add axios

نصب وابستگی ها به صورت devDependency:

pnpm add -D typescript

نصب تمام وابستگی ها از فایل package.json :

pnpm install


# ساختار node_modules در pnpm

در pnpm، دایرکتوری node_modules با سایر ابزارها متفاوت است. ساختار آن طوری طراحی شده که از symlink استفاده می شود و هر پکیج فقط یک بار در کش سیستم ذخیره خواهد شد. به همین دلیل ممکن است در ابتدای استفاده، برخی ابزارها یا پلاگین‌ها به تنظیمات بیشتری نیاز داشته باشند.

مزایای اصلی pnpm

  1. سرعت بیشتر نصب – نصب پکیج‌ها با سرعت بالا انجام می‌شود.
  2. استفاده‌ی بهینه از فضای دیسک – پکیج‌ها فقط یک بار دانلود می‌شوند و توسط لینک بین پروژه‌ها به اشتراک گذاشته می‌شوند.
  3. امنیت بیشتر – به دلیل ساختار ایزوله‌شده، دسترسی پکیج‌ها به همدیگر کنترل‌شده‌تر است.
  4. قابلیت استفاده در مونورپو (Monorepo) – pnpm ابزار بسیار قدرتمندی برای مدیریت پروژه‌های چندگانه با استفاده از workspaceها ارائه می‌دهد.


جمع‌بندی

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


منابع پیشنهادی برای مطالعه بیشتر :