اگه جزو برنامه نویسان front-end کار باشید یا حتی اگر با node.js کارکرده باشید یا توی حالت کلی فقط با جاوا اسکریپت برنامه نویسی کرده باشید، حتما کلمه npm یا yarn به گوشتون خورده. قطعا می دونید که هر دوی این ها کتابخونه ها یا ماژول های مختلفی توی خودشون دارن که مشخصا یه کار خاصی باهاش انجام میدن.مثل کتابخونه بارکد،کتابخونه جدول های چند سطری یا اسکرول بی نهایت و الی آخر.
مدتی بعد از ساخت npm فیس بوک تصمیم گرفت yarn بسازه. اما خب چرا؟ دلیل فیسبوک این بودش که npm کند هستش (حالا جلوتر دلیل این کندی میگم براتون) و البته دلیل محکم بعدی فیسبوک وجود حفره های امنیتی بودش که توی کتابخونه های npm وجود داشت. خب تا اینجا ما حرف فیسبوک قبول می کنیم من امروز قصد دارم توی این مقاله از تفاوت این دو تا صحبت کنم و می خوام این دو مورد با هم بررسی کنم بنابراین اجازه بدید یه بررسی کلی هم درباره هر دو این بزرگواران داشته باشیم تا بهتر درکشون کنیم.
نصب موازی بسته ها
وقتی که یک package یا بهتر بگم بسته ، نصب می شه، مجموعه ای از کارها را انجام می ده. در npm وقتی می خواد چندتا بسته نصب کنه ، این کار پست سر هم انجام میده یعنی هر بسته منتظر نصب بسته های قبلی خودش میشه و به همین دلیل وظایف به صورت پی در پی در هر بسته اجرا می شه. اما yarn این کار به صورت موازی انجام میده به همین خاطر سرعت و عملکردش افزایش پیدا میکنه. به عنوان مثال یه بسته ای توی react توسط yarn و npm مدت زمان نصبش اندازه گرفتیم ، شد این نتیجه :
npm — 3.572 ثانیه
Yarn — 1.44 ثانیه
امینت
در npm به همه بسته ها فارغ از نوع بسته اجازه ورود داده میشه ، بنابراین با این حرکت میاد در سیستم چندین آسیب پذیری ایجاد میکنه.اما نقطه مقابل ایشون yarn میاد فقط فایل هایی نصب می کنه که مربوط به پروندههای yarn.lock یا package.json هستن.بنابراین امنیتش بیشتر از بسته های npm است.
هر دوی اینها دارای دو مجموعه متفاوت از مزایا و ویژگی ها هستند که به طرق مختلف به کاربران کمک می کنند. yarn در مقایسه با npm کارایی بیشتری دارد. با این حال ، Yarn همچنین فضای زیادی hard drive را اشغال میکنه. Yarn بسته جدیدتری است و مردم نسبت به Yarn بیش از npm بدبین هستند ، زیرا npm
قدیمی تر هستش، اما Yarn این روزها با ثبات و به روزرسانی های امنیتی محبوبیت بیشتری پیدا می کند. همچنین لازم به ذکر است که npm هم تلاش می کنه تا با سایر package managers همراه شود ، زیرا توسعه دهندگان بیشتری روی آن کار می کنن.
در انتها لازم این نکته بگم که هدف من از این مقاله طرفداری یک package manager نیستش و نخواهد بود و صرفا این مقاله برای بالا بردن آگاهی جهت استفاده و آشنایی بهتر با این بسته های مدیریتی بودش.خب امیدوارم توی این مقاله اطلاعات مفیدی خدمتتون ارائه داده باشم.
ممنون از توجهتون :)