क्या मुझे पैकेज- lock.json और package.json दोनों की आवश्यकता है?


149

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

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

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

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

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

संपादित करें :

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


जवाबों:


103

क्या आपको दोनों की आवश्यकता है package-lock.jsonऔर package.json? नहीं

क्या आपको जरूरत है package.json? जी हां

क्या आपके पास केवल एक परियोजना हो सकती है package-lock.json? नहीं

package.jsonनिर्भरता से अधिक के लिए प्रयोग किया जाता है - परियोजना गुण, वर्णन, लेखक और लाइसेंस जानकारी, लिपियों, आदि को परिभाषित करने की तरह package-lock.jsonकेवल एक विशिष्ट संस्करण संख्या को ताला निर्भरता किया जाता है।


19

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

package.json: आपके द्वारा आवश्यक न्यूनतम संस्करण रिकॉर्ड करता है। यदि आप किसी विशेष पैकेज के संस्करणों को अपडेट करते हैं, तो यहां परिवर्तन परिलक्षित नहीं होगा।


1
यदि उपरोक्त सत्य है, और package.jsonऐप और पैकेज-लॉक द्वारा आवश्यक न्यूनतम संस्करण रिकॉर्ड करता है। प्रत्येक इंस्टॉल किए गए पैकेज का सटीक संस्करण रिकॉर्ड करता है, तो मुझे एक अजीब स्थिति आ रही है जहां पैकेज में संस्करण 0.112.1 पर एक मॉड्यूल सेट किया गया है .json और 0.110.0 पैकेज-लॉक में। Json ...
जीन-फ्रांकोइस

6

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

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


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

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

1
अब संस्करण नियंत्रण में रखना है या नहीं, इस पर एक अलग प्रश्न हैpackage-lock.json
एड्रियन डब्ल्यू

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.