2017-07-04 10 views
20

मैं गलती से npm install चलाता हूं जो यार्न का उपयोग करता है और ध्यान देता है कि एनपीएम ने package-lock.json फ़ाइल बनाई है।यार्न.लॉक और एनपीएम के पैकेज-लॉक के बीच क्या अंतर है?

मुझे पता है कि यार्न ने लोकप्रियता में तेजी से बढ़ोतरी की क्योंकि यह एनपीएम की तुलना में अधिक विश्वसनीय और निर्धारिक निर्भरता प्रतिष्ठानों का उत्पादन करने के लिए लॉकफाइल का उपयोग करता था, जो थोड़ी देर के लिए केवल shrinkwrap feature अपंग था, लेकिन अब मुझे यकीन नहीं है कि क्या करना है यह एनपीएम लॉकफाइल व्यवसाय और क्या यार्न का उपयोग जारी रखने के बारे में कुछ भी आकर्षक है या नहीं।

तो एक previous Q and A on StackOverflow on yarn vs shrinkwrap की भावना में, मैं निम्नलिखित से पूछते हैं:

  • वहाँ विश्वसनीयता के मामले में दो पैकेज प्रबंधकों के बीच किसी भी महत्वपूर्ण मतभेद किसी भी अधिक कर रहे हैं?
  • यदि नहीं, तो क्या "अधिक Emojis" के अलावा यार्न का उपयोग जारी रखने के लिए कोई अनिवार्य कारण है?
+2

https://yarnpkg.com/blog/2017/05/31/determinism/ मदद कर सकता है। ऐसा लगता है कि एनपीएम 5 ने लगभग इस संबंध में यार्न के साथ समानता हासिल की है। –

उत्तर

10

कागज पर, यार्न और एनपीएम 5 लगभग बराबर दिखते हैं। दोनों में निर्धारक लॉक फाइलें हैं और कार्यक्षमता में लगभग एक-दूसरे से मेल खाती हैं। कुछ लोग कहेंगे कि यार्न एनपीएम नवाचार पाने के उत्प्रेरक थे।

हालांकि, एक महीने के लिए एनपीएम 5 का अनुभव करने के बाद, मेरी टीम ने यार्न में जाने का फैसला किया।

एनपीएम तकनीकी रूप से एक "अधिक निर्धारक" लॉक फ़ाइल है जिसमें एक सैद्धांतिक गारंटी है कि एनपीएम संस्करणों में, एनपीएम सटीक उसी node_modules फ़ोल्डर का उत्पादन करेगा। दूसरी तरफ, यार्न की सटीक उत्थान/निर्भरता का क्रम यार्न संस्करण पर निर्भर करता है और यार्न संस्करणों में बदल सकता है। आम तौर पर, इसका बहुत कम प्रभाव पड़ता है।

यार्न का उपयोग क्यों करें? विलय & विश्वसनीयता।

यार्न ने मर्ज करने के लिए आसान एक आसान yarn.lock फ़ाइल प्राप्त करने के लिए मामूली निर्धारणावाद व्यापार बंद कर दिया। यदि आप एक एकल डेवलपर हैं, तो शायद यह आपको प्रभावित नहीं करेगा, लेकिन यदि आप निर्भरता में बदलाव करने वाले कई सहयोगियों के साथ एक टीम में हैं, तो यह जल्दी से एक बड़ी समस्या बन जाती है। एनपीएम का package-lock व्यावहारिक रूप से गैर-विलय योग्य है और आप फिर से उत्पन्न या संघर्ष कर रहे हैं। दूसरी तरफ, यार्न के साथ, विलय आसान और अनुमानित होते हैं।

देखें: https://yarnpkg.com/blog/2017/05/31/determinism/

एक तरफ ध्यान दें के रूप में, हम भी यार्न पाया औसतन अधिक विश्वसनीय माना जाता है।

+0

विलय के संबंध में, मुझे नहीं पता कि मैं yarn.lock के साथ ऐसा करने की "आसानी" के बारे में सहमत हूं या नहीं। मैं कुछ हफ्ते पहले इस मुद्दे पर भाग गया, और यह वार्तालाप पाया, जो मूल रूप से कहता है, आप _should_ पुन: उत्पन्न करते हैं, लेकिन एक विशिष्ट तरीके से ऐसा करते हैं। https://github.com/yarnpkg/yarn/issues/1776#issuecomment-269539948 – jktravis

संबंधित मुद्दे