2017-07-12 18 views
18

मेरे एनपीएम को नवीनतम संस्करण (3.X से 5.2.0 तक) में अपडेट करने और मौजूदा प्रोजेक्ट पर npm install चलाने के बाद, मुझे एक ऑटो-निर्मित package-lock.json फ़ाइल मिलती है।क्या मुझे पैकेज-लॉक.जेसन और पैकेज.जेसन दोनों की आवश्यकता है?

मैं package-lock.json बता सकता हूं कि package.json के विपरीत मुझे एक सटीक निर्भरता पेड़ देता है।

अकेले उस जानकारी से, ऐसा लगता है कि package.json अनावश्यक है और अब इसकी आवश्यकता नहीं है।

क्या दोनों एनपीएम के लिए काम करने के लिए आवश्यक हैं?
क्या यह केवल package-lock.json फ़ाइल का उपयोग करने के लिए सुरक्षित है या संभव है?

पैकेज-लॉक.जेसन (doc1, doc2) पर दस्तावेज़ इस बारे में कुछ भी उल्लेख नहीं करते हैं।

संपादित:

के बाद कुछ और इस बारे में सोच, मैं निष्कर्ष पर पहुंचा है कि किसी NPM के एक पुराने संस्करण (5.x से पहले) यह अभी भी के सभी स्थापित होगा साथ अपनी परियोजना का उपयोग करना चाहता है, तो निर्भरता, लेकिन कम सटीक संस्करणों (पैच संस्करणों)

+1

[लिंक] (https://stackoverflow.com/questions/44297803/package-lock-json-role) –

उत्तर

11

NPM डॉक्स पृष्ठ से साथ:

package-lock.json स्वत: ही किसी operat के लिए उत्पन्न होता है आयन जहां एनपीएम या तो node_modules पेड़, या package.json संशोधित करता है। यह उत्पन्न होने वाले सटीक पेड़ का वर्णन करता है, जैसे कि बाद के इंस्टॉल मध्यवर्ती निर्भरता अद्यतनों के बावजूद समान पेड़ उत्पन्न करने में सक्षम होते हैं।

package.json के साथ आप नेस्टेड निर्भरताओं के संस्करणों को नियंत्रित नहीं कर सकते हैं। भले ही आप अपनी प्रत्यक्ष निर्भरताओं के संस्करणों को बंद कर दें, आप 100% गारंटी नहीं दे सकते कि आपका पूर्ण निर्भरता पेड़ हर समय समान होगा।

package-lock.json के साथ, लॉक फ़ाइल पूर्ण निर्भरता पेड़ के संस्करण को ताला लगा देती है। यह आपको अन्य डेवलपर्स के लिए या अपने मानक package.json का उपयोग करके नए निर्भरता संस्करणों (प्रत्यक्ष या अप्रत्यक्ष) के परीक्षण की अनुमति देते हुए रिलीज के लिए अपने निर्भरता पेड़ की गारंटी देता है।

इसलिए, यह एक अनावश्यक नहीं है बल्कि सख्त पर्यावरण के तहत निर्भरता पेड़ स्थापित करने की कार्यक्षमता प्रदान करता है।

+1

जबकि आप जो कह रहे हैं वह सच है, मैं पूछ रहा था कि केवल 'पैकेज-लॉक' का उपयोग करना संभव है या नहीं। जेसन', क्योंकि यह परियोजना की निर्भरताओं का एक और सटीक वर्णन करता है। –

+1

हां, यह केवल पैकेज-लॉक.जोसन फ़ाइल के लिए पर्याप्त होगा लेकिन बड़ी परियोजनाओं के दौरान जहां बड़ी संख्या में योगदानकर्ता हैं और आप अपने पर्यावरण के बारे में नहीं जानते हैं, दोनों फाइलों को शामिल करना एक अच्छा अभ्यास है। –

+0

यदि आप अपने उत्तर में अंतिम पैराग्राफ को संपादित और रीफ्रेश कर सकते हैं तो मैं आपको बक्षीस दूंगा। यह 100% स्पष्ट नहीं है कि आप क्या कह रहे हैं। –

0

यदि आपका प्रश्न यह है कि लॉक फ़ाइल को आपके स्रोत नियंत्रण के लिए प्रतिबद्ध किया जाना चाहिए - तो चाहिए। कुछ परिस्थितियों में इसे नजरअंदाज कर दिया जाएगा।

मुझे यह पुल अनुरोधों को झुकाव और इतिहास करने के लिए मिला, इसलिए यदि आप इसे बदलते देखते हैं, तो इसके लिए एक अलग प्रतिबद्धता करें।

+1

नहीं, मैं स्रोत नियंत्रण में काम करने के बारे में नहीं पूछ रहा था। अगर एनपीएम को उन दोनों की जरूरत है ** एक ही समय में ** काम करने के लिए। 'package-lock.json'' package.json' के अधिक वर्बोज़ संस्करण की तरह प्रतीत होता है, तो क्या यह केवल लॉक फ़ाइल का उपयोग करना सुरक्षित या संभव है। –

+0

मैं देखता हूं, मैंने अपनी परियोजनाओं में पैकेज.जेसन छोड़ दिया है, मुख्य रूप से एनपीएम स्क्रिप्ट के लिए एक जगह है। –

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

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