نه npm و نه yarn هیچکدومشون بد نیستند، فقط npm طی سالیانی که گذشته یکسری حفره های امنیتی ناجور و همچنین یکسری مشکلات پرفورمنسی داشته و روش کار کردند و برطرف شده و دارند حلش می کنند. حالا yarn این وسط چی میگه؟ دولوپرهای فیسبوک داشتند روی یکسری از مشکلات npm کار میکردند، که کارخودشون راه بندازند و بعد از یک مدتی دیدند یک محصولی دارند، شبیه به npm که میتونه جایگزینش بشه و اواخر ۲۰۱۶ yarn رو منتشر کردند.
حالا ۵ دلیل برای اینکه yarn رو انتخاب کنیم رو براتون شرح میدم:
۱- هر پکیجی که شما با npm یا yarn نصب کنید روی سیستم شما cache میشه. حالا اگر از yarn استفاده کرده باشید، مطابق مستندات yarn اون چیزی که نصب شده قابل اعتماد هست و برای نصب مجدد اون پکیج از همون چیزی که کش شده استفاده میکنه اما این موضوع در مورد npm صدق نمیکنه، در نتیجه زمانی که شما بخواهید پکیجی رو برای بار های دوم و سوم نصب کنید، سرعت نصبش بیشتر است و نکته مهمتر اینکه شما میتونید اون پکیج رو بصورت افلاین هم نصب کنید.
۲- یارن (yarn) تمام پکیج ها رو بصورت موازی دانلود و نصب میکنه ولی npm ورک فلوش بصورت سریالی این کار رو انجام میده یعنی در npm، پکیج اول دانلود نصب بعدش میره سراغ پکیج بعدی، در نتیجه سرعت دانلود و نصب پکیچ ها در yarn بالاتر هست.
۳- یارن (yarn) اگر در موقع دانلود پکیجی دچار مشکل بشه، خودش بصورت پیشفرض سعی میکنه ادرس های mirror جایگزینش رو تست میکنه و اون عملیات دانلود رو retry میکنه تا پکیج نصب بشه. این مشکل ممکنه بخاطر قطعی اینترنت یا کانکشن شما باشه.
۴- ان پی ام (npm) بصورت پیشفرض، هر پکیجی رو که بخواد نصب کنه میره سراغ npm registry که در واقع یک فضای ابری هست که تمام پکیج ها اپلود شده در اونجا قرار دارند و اگر پکیجی در اونجا نباشه، به شما خطا میده و نصب نمیشه، مگر اینکه شما در کانفینگ npm تون برید و مخزن دیگه رو هم تنظیم کرده باشید که اونجا رو هم بگرده، در حالی که در yarn که multiple registry هست و علاوه بر اینکه npm registry رومیره میگرده، Bower registry رو هم میره میگرده. Bower هم یک پکیج منجر هست. جدا از مخزن های انلاین، در yarn این امکان وجود داره که اگر مخزنی بصورت افلاین وجود داشته باشه رو هم میتونید توی کانفیگش yarn سیستم تون تنظیم کنید و اونجا رو هم بگرده.
۵- یارن (yarn) این امکان رو به شما میده که برای پروژه هایی که به هم مرتبط هستند و دیپندنسی های مشترک دارند، یک workspace ایجاد بکنید و مدیریت پکیج ها رو راحت تر انجام بدید. حالا شما برای مدیریت پکیج هاتون باید بیرونی ترین پوشه یا پوشه مادری که دارید اونجا پکیج ها رو نصب و مدیریت کنید.
اگر از این مقاله چیزی یاد گرفتید، لطفا یه لایک خوشگل بزنید و نظرتونو هم دربارهی این مقاله بگید چون خیلی دوس دارم نظرتونو بخونم. ممنون که وقت گذاشتید و مطالعه کردید. اگر دوست داشتید میتونید به کانال تلگرامم هم سر بزنید، یکسری از تجربیاتم رو اونجا هم منتشر میکنم. عالی باشید :)