क्या पैकेज-लॉक उत्पन्न करने के लिए एनपीएम को बाध्य करने का एक तरीका है?


132

मैंने इसे दुर्घटना से हटा दिया और तब से कई बदलाव किए हैं package.json। A npm installया npm updateउत्पन्न नहीं करता हैpackage-lock.json । मैंने अपना npm कैश और अपना nvm कैश साफ़ करने की कोशिश की, लेकिन कुछ भी काम नहीं कर रहा है। मैंने इसे Node.js (6.10.3 Node.js - 3.10.10 npm) के कई संस्करणों पर आज़माया, जो मुझे पसंद है कि मैं इस पर काम करूं), और यह किसी भी काम नहीं करता है।

क्या package-lock.jsonफ़ाइल को उत्पन्न करने के लिए npm को बाध्य करने का कोई तरीका है ?


2
मुझे लगता है कि पैकेज- lock.json npm 5 के लिए विशिष्ट है
ब्रेट

3
package-lock.jsonV5 से डिफ़ॉल्ट रूप से स्वतः उत्पन्न हो रहा है v5 से शुरू होता है, पिछले संस्करणों में, लॉक फ़ाइल नाम था npm-shrinkwrap.jsonऔर यह मैन्युअल रूप से npm shrinkwrapकमांड का उपयोग करके उत्पन्न किया गया था ।
एलेक्समैक

@BrettMerrifield धन्यवाद! यही मेरी समस्या थी। मैंने node 8.6.0इसे npm 5.3.0और इसके साथ अद्यतन किया और इसने काम किया।
बिग मनी

अपनी जाँच करें .gitignoreमैं गलती package-lock.jsonसे .gitignoreकिसी भी तरह से package-lock.jsonथा और क्योंकि इसमें दिखाई नहीं दे रहा git statusथा मुझे फेंक रहा था।
जोशुआ पिंटर

जवाबों:


155

package-lock.jsonजब भी आप चलते हैं , डिफ़ॉल्ट रूप से, अपडेट किया जाता है npm install। हालाँकि, इसमें सेटिंग करके इसे विश्व स्तर पर अक्षम किया जा सकता package-lock=falseहै ~/.npmrc

जब वैश्विक package-lock=falseसेटिंग सक्रिय होती है, तब भी आप किसी प्रोजेक्ट की package-lock.jsonफ़ाइल को चलाने के लिए अद्यतन करने के लिए बाध्य कर सकते हैं :

npm install --package-lock

यह कमांड package-lock.jsonअद्यतन को लागू करने का एकमात्र निश्चित तरीका है ।


@RonNewcomb क्या आप अधिक जानकारी साझा कर सकते हैं? "यह काम नहीं करता है" से आपका क्या मतलब है? आप किस npm संस्करण का उपयोग कर रहे हैं?
मथियास ब्येनेंस

npm संस्करण 3.10.10 नोड 6.10.3 आपके द्वारा सूचीबद्ध कमांड एक नो-ऑप लगती है? कुछ नहीं हुआ। कोई त्रुटि नहीं, कोई फ़ाइल परिवर्तन नहीं, कुछ भी नहीं।
रॉन न्यूकॉम्ब

2
यदि आप अपने प्रोजेक्ट के लिए npm v3 का उपयोग कर रहे हैं, तो आपके पास a नहीं होगा package-lock.jsonpackage-lock.jsonकेवल npm v5 + द्वारा समर्थित है।
मथियास बीनेंस

8
npm v 6.4.1 और इससे पैकेज-लॉक नहीं बनता। json
mjuopperi

1
यह मेरे लिए काम करता है, 6.4.1 में। इसे असत्य पर सेट करना भी इसे एक बनाने से रोकता है।
केविन बी

94

एनपीएम 6.x में आप उपयोग कर सकते हैं

npm i --package-lock-only

Https://docs.npmjs.com/cli/install.html के अनुसार

--पैकेज-लॉक-ओनली तर्क केवल पैकेज-लॉक.जॉन को अपडेट करेगा, बजाय नोड_मॉड्यूल और डाउनलोडिंग निर्भरता की जांच के।


12
यह अब सही उत्तर है, अन्य पुराने और अभ्यस्त काम हैं।
वैभव सिंह

किसी भी सुराग कैसे devD निर्भरता के बिना एक पैकेज- lock.json उत्पन्न करने के लिए? मुझे साफ उत्पादन स्थापित करने के लिए इसकी आवश्यकता है। npm i --package-lock-only --only=productionकाम करने के लिए प्रतीत नहीं होता है।
रॉबर्ट

मुझे नहीं लगता कि यह package-lock.jsonकेवल उत्पादन निर्भरता के लिए उत्पन्न करना संभव है । लेकिन अगर आप npm i --only=productionइसे चलाते हैं तो केवल उत्पादन निर्भरता स्थापित करनी चाहिए। तो आपकी निर्माण प्रक्रिया इस तरह दिख सकती है: सभी निर्भरता स्थापित करें, एप्लिकेशन बनाएं, node_modulesकेवल उत्पादन निर्भरता को निकालें और स्थापित करें।
Janusz Przybylski

14

टिप्पणियों में इसका उत्तर दिया गया है; v5 और उच्चतर package-lock.jsonमें एक विशेषता है npmnpm shrinkwrapयह है कि आप सभी संस्करणों में लॉकफ़ाइल कैसे बनाते हैं npm


1
ध्यान दें, हालांकि, package-lock.jsonसिक्रेट्रैप फ़ाइलों के रूप में सटीक एक ही बात नहीं है।
स्ट्रगलर

7
एनपीएम 5+ में, वे, वास्तव में, समान रूप से, प्रत्येक विवरण के लिए नीचे हैं, एक चीज को छोड़कर: npm-shrinkwrap.jsonरजिस्ट्री में प्रकाशित किया package-lock.jsonजाएगा , और नहीं।
LJHarb

6
हां। हालांकि यह एक बहुत महत्वपूर्ण अंतर है, यही वजह है कि मैंने अपनी टिप्पणी छोड़ दी।
शरणार्थी

1
npm shrinkwrapउत्पन्न करता है npm-shrinkwrap.json, लेकिन आप कैसे उत्पन्न करते हैं package-lock.json?
विक

5
यह npm 5+ में स्वचालित है, या आप इसे 5+ में--package-lock
LJHarb

1

के रूप में कई जवाब समझाया आप चलाना चाहिए:

npm i

लेकिन अगर यह नहीं है हल ...

अपने npmनिष्पादन योग्य के संस्करण की जाँच करें । (मेरे लिए यह 3.xx था जो package-lock.jsonसभी का उपयोग नहीं करता है )

npm -v

यह कम से कम 5.xx (जो पेश किया गया है) होना चाहिए पैकेज-लॉक.जसन फ़ाइल को गया है।)

Lunix पर npm को अपडेट करने के लिए इन्हें फॉलो करें निर्देशों करें।

अधिक जानकारी के लिए कृपया इस मध्यम कहानी को पढ़ने के लिए फाइल को पैकेज करें ।


0

यदि आपका npm संस्करण 5 संस्करण से कम है , तो पैकेज-लॉक.जॉन की स्वचालित पीढ़ी प्राप्त करने के लिए उच्च संस्करण स्थापित करें ।

उदाहरण: अपने वर्तमान अपग्रेड NPM संस्करण 6.14.0 करने के लिए

npm i -g npm@6.14.0

आप द्वारा नवीनतम npm संस्करण सूची देख सकते हैं

npm view npm versions

-3

जब भी आप दौड़ते हैं तो पैकेज-लॉक.जॉन को फिर से जेनरेट किया जाता है npm i


13
यह केवल nodeऔर के कुछ संस्करणों के लिए सच है npm। मुझे लगता है कि यह npm=> 5.0और node> = है 7.0, लेकिन मैं उस पर 100% निश्चित नहीं हूं। यह node 6.11.3मेरे लिए काम नहीं करता है।
Thor84no

2
यह भी सच नहीं है कि अगर पैकेज-लॉक को npm कॉन्फिगर करने के लिए गलत सेट किया गया है। चेक करने के लिए 'npm config list' का प्रयोग करें
Damo

package-lock.json स्वचालित रूप से किसी भी ऑपरेशन के लिए उत्पन्न होता है जहाँ npm या तो नोड_मॉड्यूल्स ट्री, या package.json को संशोधित करता है। Docs.npmjs.com/files/package-lock.json को स्वीकार करना । लेकिन npm संस्करण निर्दिष्ट नहीं है।
नैनो नैनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.