मेरा सरल सवाल यह है: मैं अपने पैकेज.जेसन में सटीक संस्करणों का उपयोग क्यों नहीं कर सकता? यह लॉकफाइल से अलग कैसे है?यार्न/एनपीएम 5 लॉकफाइल और सटीक पैकेज संस्करणों के बीच अंतर?
उत्तर
मुख्य अंतर यह है कि लॉकफाइल नेस्टेड निर्भरताओं को भी लॉक कर दिया है - आपकी निर्भरताओं की सभी निर्भरताओं, और इसी तरह। उन सभी परिवर्तनों का प्रबंधन और ट्रैकिंग अविश्वसनीय रूप से कठिन हो सकता है, और उपयोग किए जाने वाले पैकेजों की संख्या तेजी से बढ़ सकती है। 2 पुस्तकालयों कि क्रमश: ~1.0.0
और ~2.0.0
पर foo
निर्दिष्ट पर विचार -
वहाँ भी स्थितियों में, जहां आप मैन्युअल रूप से निर्दिष्ट नहीं कर सकते कि एक पैकेज का एक विशेष संस्करण इस्तेमाल किया जाना चाहिए रहे हैं। प्रमुख संस्करण में अंतर हमें बताता है कि foo @ v1 का एपीआई foo @ v2 के एपीआई से मेल नहीं खा रहा है, इसलिए कोई भी तरीका नहीं है कि आप अपने ऐप स्तर पर पैकेज संस्करण को विवाद और असफलताओं के बिना ओवरराइड कर सकें।
अंत में, आपको आश्चर्य हो सकता है कि "फिर से सेमेस्टर क्यों है? क्यों न केवल सभी संकुलों को उनकी निर्भरताओं के सटीक संस्करण को निर्दिष्ट करते हैं?" सेमेवर के मुख्य फायदों में से एक यह है कि इसका मतलब है कि जब भी उप-निर्भरता अपडेट होते हैं तो आपको पेड़ में हर निर्भरता को अपडेट करने की आवश्यकता नहीं होती है। अगर मैं foo
पर भरोसा करता हूं, और foo
bar
पर निर्भर करता है, और bar
में केवल एक महत्वपूर्ण बग था जिसे पैच किया गया था, और हम सब कुछ के लिए सटीक संस्करणों का उपयोग कर रहे हैं, तो foo
को ठीक करने से पहले अपडेट किया जाना चाहिए। अगर फू और बार में अलग-अलग रखरखाव होते हैं, या अगर फू को छोड़ दिया जाता है, तो इसमें कुछ समय लग सकता है और मुझे परियोजना को फोर्क करने की आवश्यकता हो सकती है (कुछ मैंने जावा-भूमि में एक से अधिक बार किया है)।
पुस्तकालयों के पारिस्थितिक तंत्र को बनाए रखने के लिए यह बहुत उपयोगी है क्योंकि यह मूल रूप से निर्भरता पेड़ में प्रति-नोड आवश्यक रखरखाव कार्य की मात्रा को कम करता है, जिससे पुस्तकालयों और पैटर्न निकालने में आसानी होती है। मेरे पास एक बार एक प्रारंभिक प्रोजेक्ट था जहां हम एक घटक लाइब्रेरी बना रहे थे जो सटीक संस्करणों का उपयोग करता था, और किसी भी समय साझा लाइब्रेरी युक्त साझा लाइब्रेरी को अपडेट किया गया था, हमें संस्करण को अपडेट करने के लिए अन्य पीआर के प्रत्येक को पीआर जमा करना पड़ा था, और कभी-कभी उन घटकों के लिए पीआरएस का पालन करें जो पर पर निर्भर थे। कहने की जरूरत नहीं है, हमने कुछ महीनों के बाद पैकेज को समेकित किया।
आशा है कि मदद करता है!
- 1. कंपाइलर और इंटरप्रेटर के बीच सटीक अंतर?
- 2. स्टोरीबोर्ड और स्टोरीबोर्ड पैकेज के बीच अंतर?
- 3. जेएसटीएल और अभिव्यक्ति भाषा के बीच सटीक अंतर और संबंध
- 4. ओरिएंटब संस्करणों के बीच क्या अंतर है?
- 5. MySQL रिलीज संस्करणों के बीच अंतर
- 6. डिस्ट-पैकेज और साइट-पैकेज के बीच क्या अंतर है?
- 7. इरादे और लंबित इरादे के बीच सटीक अंतर क्या है?
- 8. हैडोप और क्लाउड कंप्यूटिंग के बीच सटीक अंतर क्या है?
- 9. एडाप्टर और प्रॉक्सी पैटर्न के बीच सटीक अंतर क्या है?
- 10. /एफपी के बीच अंतर: सख्त और/एफपी: सटीक?
- 11. बराबर और सटीक बराबर अवधि तुलना ऑपरेटरों के बीच अंतर
- 12. जेएसएच चैनलएक्सैक और चैनलशेल के बीच सटीक अंतर क्या है?
- 13. रिलीज और एकीकरण संस्करणों के बीच क्या अंतर है?
- 14. यार्न.लॉक और एनपीएम के पैकेज-लॉक के बीच क्या अंतर है?
- 15. उम्ब्राको नुगेट पैकेज के बीच अंतर
- 16. जावा में पैकेज और निर्देशिका के बीच अंतर
- 17. घटक आरेख और पैकेज आरेख के बीच अंतर
- 18. फ्रीज में "पैकेज" और "मॉड्यूल" के बीच क्या अंतर है?
- 19. एनपीएम जैस्मीन और जैस्मीन-कोर पैकेज के बीच अंतर
- 20. नोड में एक मॉड्यूल और एक पैकेज के बीच अंतर?
- 21. आर-बेस और आर-अनुशंसित पैकेज के बीच अंतर
- 22. जेएआर और पैकेज के बीच क्या अंतर है?
- 23. एक डीएल और nuget पैकेज के बीच क्या अंतर है?
- 24. अंतर "संस्करणों?" (ARMv7 केवल)
- 25. सटीक लालची/अनिच्छुक एक्स {एन} के बीच अंतर?
- 26. आईओएस 6 - आईफोन 5 और अन्य उपकरणों के बीच अंतर?
- 27. एचडीएफ 5 फ़ाइल और पीईटेबल्स फ़ाइल के बीच अंतर
- 28. एसवीजी और एचटीएमएल 5 कैनवास के बीच क्या अंतर है?
- 29. वेबसाकेट संस्करणों के बीच प्रोटोकॉल अंतर क्या हैं?
- 30. "पैकेज आयात *" और "आयात पैकेज" के बीच प्रदर्शन
ग्रेट स्पष्टीकरण, धन्यवाद! – user2061057
मुझे यकीन नहीं है कि मैं आपके दूसरे अनुच्छेद का पालन करता हूं। एनपीएम में, क्या प्रत्येक मॉड्यूल को 'यह निर्भरता पेड़' नहीं मिलता है? दूसरे शब्दों में, एक पारस्परिक निर्भरता के 2 विरोधाभासी संस्करणों के साथ एनपीएम ओके नहीं है, क्योंकि यह उन्हें अलग रखता है? – jrahhali
हां, लेकिन यदि 2 पैकेज समान निर्भरता साझा करते हैं, तो एनपीएम आपके नोड_मोड्यूल के शीर्ष स्तर पर केवल एक बार उस डिप्टी को इंस्टॉल कर सकता है। https://docs.npmjs.com/how-npm-works/npm3-nondet यह दस्तावेज़ npm3 के लिए है लेकिन यह अभी भी लागू होता है। – user2301179