Yarn چیست و چه تفاوتهایی با NPM دارد ؟
Yarn یک Package Manager برای Node.js است که جایگزینی برای NPM به شمار میرود. Yarn با هدف بهبود و رفع مشکلاتی که در NPM موجود است توسعه پیدا کرده و توسط دهها شرکت و صدها توسعهدهنده در حال گسترش است.
به دلیل ویژگیهای خوب Yarn، تعداد ستارههای Github پروژه نسبت به NPM در حال حاضر تقریبا دو برابر است.

Package Manager چیست ؟
پکیجمنیجرها مانند Yarn و NPM ابزارهای ضروری در توسعه جاوا اسکریپت هستند که فرآیند یافتن، دانلود، نصب، بهروزرسانی و مدیریت وابستگیها (کتابخانهها و بستهها) برای پروژهها را خودکار میکنند. آنها با فراهم کردن امکان گنجاندن و اشتراکگذاری آسان ماژولهای کد خارجی توسط توسعهدهندگان، استفاده مجدد از کد را ساده میکنند.
NPM (پکیج منیجر Node) به صورت از پیش نصب شده با Node.js ارائه میشود و به طور گسترده مورد استفاده قرار میگیرد. این نرمافزار بستهها را به صورت تک به تک و پی در پی مدیریت میکند، که گاهی اوقات میتواند منجر به نصب کندتر در پروژههای بزرگ شود. NPM یک ساختار پوشه تو در تو برای وابستگیها ایجاد میکند و از یک فایل قفل (package-lock.json) برای اطمینان از نصبهای مداوم استفاده میکند.
Yarn، که توسط فیسبوک توسعه داده شده است، به عنوان جایگزینی برای رفع کاستیهای قبلی NPM ظهور کرد. Yarn بستهها را به صورت موازی نصب میکند و به طور کلی آن را سریعتر میکند، به خصوص برای پروژههای بزرگ. Yarn از یک ساختار وابستگی مسطح استفاده میکند که از تو در تو بودن عمیق جلوگیری میکند و تداخلها را کاهش میدهد. همچنین از نصبهای آفلاین کامل پشتیبانی میکند و بررسیهای امنیتی را از طریق کد checksum انجام میدهد. Yarn از یک فایل yarn.lock برای درختهای وابستگی قطعی استفاده میکند و برخی ویژگیهای منحصر به فرد برای بهینهسازی جستجوی بستهها ارائه میدهد.
تفاوتهای Yarn و NPM
Yarn از مخزن NPM استفاده میکند و سازگاری زیادی با این ابزار دارد به همین دلیل، مهاجرت از NPM به Yarn به آسانی قابل انجام است. از جمله تفاوتهای مهم Yarn با NPM موارد زیر هستند:
- سرعت بیشتر
- امنیت بیشتر
- نصب همزمان کتابخانهها
- یکپارچگی بیشتر
- نصب آفلاین نیازمندیها( در نسخهی جدید NPM هم اضافه شده است )