मैं नवीनतम संस्करण में package.json में प्रत्येक निर्भरता को कैसे अपडेट करूं?


2010

मैंने एक अन्य प्रोजेक्ट से पैकेज.जसन की नकल की और अब सभी निर्भरताओं को अपने नवीनतम संस्करणों से टक्कर देना चाहते हैं क्योंकि यह एक ताजा प्रोजेक्ट है और अगर यह टूटता है तो मुझे कुछ तय करने में कोई आपत्ति नहीं है।

ऐसा करने का सबसे आसान तरीका क्या है?

अब मुझे पता है कि सबसे अच्छा तरीका है कि npm info express versionपैकेज को अपडेट करें। प्रत्येक के लिए मैन्युअल रूप से अपडेट करें। इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। '

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

अद्यतन 5/1/19 : छह साल बाद और मैं अभी भी इस समस्या के व्यापक समाधान के रूप में एनपीएम-चेक-अपडेट बनाए हुए हूं । का आनंद लें!


2
इस समस्या के लिए एक और दृष्टिकोण देखने के लिए महान। मुझे वास्तव में सलिता का आउटपुट पसंद है। कुछ अच्छी विशेषताएँ जो मैं अब तक योगदान करता हूं, github.com/tjunnone/npm-check-updates, संस्करण वर्चस्व (जैसे 1.x या> 2.1.0) का संरक्षण कर रहे हैं और नाम / rege / devDeps- द्वारा फ़िल्टर कर रहे हैं।
राइन रेवरे

1
यहां कुछ बेहतर जवाब देने की जरूरत है। स्पष्ट रूप से निर्भरता के संकल्प के साथ, आपके पास हमेशा सब कुछ का नवीनतम संस्करण नहीं हो सकता है। मॉड्यूल के नवीनतम संस्करणों की सबसे बड़ी संख्या को अधिकतम करना, बस कुछ प्रकार की अनुकूलन समस्या है। लेकिन एनपीएम को यह नहीं पता कि आप किस मॉड्यूल को दूसरों की तुलना में सबसे हाल ही में बनाना चाहते हैं। अगर ऐसा कुछ होता तो यह अच्छा होता: npm update --latest xyz, जहां xyz वे मॉड्यूल हैं जिन्हें आप हाल ही में चाहते हैं और अन्य सभी मॉड्यूल अपने सबसे हाल के संगत संस्करण के साथ अनुसरण करेंगे।
अलेक्जेंडर मिल्स

2
npm प्रत्येक के लिए सही एक डाउनलोड करके साझा निर्भरता के बीच सही ढंग से संस्करण संघर्षों को संभालेंगे। इसलिए, यदि Dep A डिपेंड C v1.0.0 पर निर्भर करता है और Dep B डिपेंड C v2.0.0 पर निर्भर करता है, तो वे प्रत्येक स्थापित और उचित रूप से उपयोग किए जाएंगे। इसलिए, आप अपने इच्छित किसी भी पैकेज का नवीनतम इंस्टॉल करने के लिए स्वतंत्र हैं।
राइन रेवरे

अपग्रेड को बल देने के लिए यह प्रयास करें:npm outdated | sed '1d; s/ .*/@latest/' | xargs npm i --save
miorey

मैं हमेशा इस उत्तर की जाँच कर रहा हूँ। लेकिन मैं देखता हूं कि यह Google परिणामों में फिसल गया है। उम्मीद है कि यह टिप्पणी पुश अप को प्रासंगिक बनाने में मदद करेगी !!
Zach Smith

जवाबों:


2390

ऐसा लगता है कि npm-check-अपडेट अब ऐसा करने का एकमात्र तरीका है।

npm i -g npm-check-updates
ncu -u
npm install

Npm पर <3.11:

बस हर निर्भरता के संस्करण को बदल दें *, फिर चलाएं npm update --save। ( नोट: npm के हाल के (3.11) संस्करणों में टूटा हुआ )।

इससे पहले:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

उपरांत:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

बेशक, यह निर्भरता को अद्यतन करने का कुंद हथौड़ा है। यह ठीक है अगर - जैसा कि आपने कहा — परियोजना खाली है और कुछ भी नहीं टूट सकता है।

दूसरी ओर, यदि आप अधिक परिपक्व परियोजना में काम कर रहे हैं, तो आप शायद यह सत्यापित करना चाहते हैं कि उन्नयन से पहले आपकी निर्भरता में कोई परिवर्तन नहीं हुए हैं।

यह देखने के लिए कि कौन से मॉड्यूल पुराने हैं, बस चलाएं npm outdated। यह किसी भी स्थापित निर्भरता को सूचीबद्ध करेगा जिनके पास नए संस्करण उपलब्ध हैं।


13
@thefourtheye: आप आम तौर पर package.json में नहीं छोड़ना चाहिए *क्योंकि आप अपने एप्लिकेशन को तोड़ने वाले परिवर्तनों को तोड़ने के साथ एक नया मॉड्यूल संस्करण स्वचालित रूप से स्थापित कर सकते हैं। चूंकि हम --saveयहां उपयोग कर रहे हैं, इसलिए *इसे प्रत्येक पैकेज के वर्तमान संस्करण से बदल दिया गया है।
josh3736

50
मैं यह काम करने में सक्षम नहीं हूं। Npm के साथ कुछ बदल गया है क्योंकि यह उत्तर पोस्ट किया गया था? जब मैं वाइल्डकार्ड का उपयोग करता हूं और तब npm install --saveवाइल्डकार्ड मेरे अंदर रह जाता है package.json
davidtheclark 22

15
दुर्भाग्य से, updateमेरे लिए, या तो काम नहीं कर रहा है। मैं अभी भी वाइल्डकार्ड के साथ बचा हुआ हूं। क्या इस बारे में कोई दस्तावेज है, जिसे आप जानते हैं, या कोई अन्य संसाधन जो मैं देख सकता हूं?
davidtheclark

120
थोड़ा पुराना लेकिन जो अन्य लोगों की मदद कर सकता है: github.com/tjunnone/npm-check-updates | npm install -g npm-check-updatesइंस्टॉल करने के लिए उपयोग करें , फिर npm-check-updatesयह जांचने के लिए कि क्या आपकी निर्भरता अपडेट है, और npm-check-updates -uआपके पैकेज को अपडेट करने के लिए। json संस्करण। तब यह सिर्फ है npm installऔर यह नए संस्करण डाउनलोड करेगा।
राफेलडीडीएल

5
आपकी समस्या शायद इस तथ्य से आ रही है कि आप npm update --saveइसके बजाय टाइप करके देव संकुल को अद्यतन करने का प्रयास करते हैं npm update --save-dev
एड्रिएन्डेनैट

1035

npm-check-updates एक उपयोगिता है जो स्वचालित रूप से सभी आश्रितों के नवीनतम संस्करण के साथ एक पैकेज समायोजित करती है

देख https://www.npmjs.org/package/npm-check-updates

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

[संपादित करें] एक थोड़ा कम दखल यह कर आप का आधुनिक संस्करण है, तो के रास्ते (एक वैश्विक स्थापित बचा जाता है) npmहै:

$ npx npm-check-updates -u
$ npm install 

135
यह एनपीएम कमांड के माध्यम से मूल रूप से उपलब्ध होना चाहिए, वास्तव में निर्भरता को अपडेट करने के लिए अब तक का सबसे अच्छा समाधान।
मोहम्मद आरिफ

7
मूल रूप से npm का हिस्सा होना चाहिए, पूरी तरह से सहमत हैं। हालाँकि, यह नहीं है और यह समाधान हवा की तरह आता है। धन्यवाद।
स्टेफन

2
मुझे लगता है कि आप फेलो [एचएआरडी] को मुख्य एनपीएम में लाने के लिए जोर दे रहे हैं?
enorl76

3
@ बैटमैन हां अगर आपने पहले स्थापित नहीं किया है। अन्यथा npm अद्यतन का उपयोग करें। ncu सिर्फ package.json को अपडेट करता है। यह 'node_modules' को स्थापित या अद्यतन नहीं करता है।
मुजफ्फर

1
बेकार पैकेज, पैकेज का केवल एक हिस्सा अपडेट कर रहा है, पैकेज अपडेट ncu -aनहीं कर रहा है।
अलेक्जेंडर किम

385

नवीनतम एनपीएम के लिए अपडेट किया गया

npm 2+ (नोड 0.12+):


npm outdated
npm update
git commit package-lock.json

प्राचीन npm (लगभग 2014):

npm install -g npm-check-updates
npm-check-updates
npm shrinkwrap
git commit package-lock.json

अपने डिप्स को सिकोड़ना सुनिश्चित करें, या आप एक मृत परियोजना के साथ हवा कर सकते हैं। मैंने दूसरे दिन एक प्रोजेक्ट निकाला और यह नहीं चलेगा क्योंकि मेरे डिपो डेट से बाहर थे / अपडेट / मेस थे। अगर मैं सिकुड़ जाता, तो npm ठीक वही स्थापित होता जो मुझे चाहिए था।


विवरण

जिज्ञासु के लिए जो इसे दूर करते हैं, यहां मैं यही सुझाता हूं:

नवीनतम संस्करणों का उपयोग npm-check-updatesया npm outdatedसुझाव देने के लिए।

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

फिर एक क्लीन इन्स्टाल करें (w / o rm मुझे कुछ निर्भरता की चेतावनी मिली)

$ rm -rf node_modules
$ npm install 

अंत में, के npm-shrinkwrap.jsonसाथ सटीक संस्करणों को बचाओnpm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

अब, npm installअब में सटीक संस्करणों का उपयोग करेगाnpm-shrinkwrap.json

यदि आप npm-shrinkwrap.jsonगिट में जांच करते हैं, तो सभी इंस्टॉलेशन सटीक समान संस्करणों का उपयोग करेंगे।

यह विकास से बाहर संक्रमण (सभी अद्यतन, हर समय) उत्पादन करने के लिए (कोई भी कुछ भी नहीं छूने) का एक तरीका है।

ps यार्न आपकी पैकेज सूची फेसबुक को भेज रहा है


13
यह वास्तविक सही उत्तर है। दर्जनों डिपों के साथ, यह एक बेहतर तरीका है
एंजेल एस। मोरेनो

6
अनुभव से, एक साथ सभी पैकेजों को हमेशा अपडेट करने की सलाह खतरनाक हो सकती है।
अल्फागदग

1
पक्का। यदि आप बनाते हैं और npm-shrinkwrap.jsonस्रोत में, और जब भी आप अपडेट करते हैं, तो आप हमेशा 'जहाँ आप थे' वापस जा सकते हैं। जब मैंने शुरुआत की तो मैंने सिक्योरवैप फीचर को नजरअंदाज कर दिया।
माइकल कोल

21
इस सवाल का जवाब नहीं है । सवाल यह है कि नवीनतम संस्करण को कैसे अपडेट किया जाए । npm updateकेवल सेमर संस्करण के लिए अद्यतन, नवीनतम नहीं।
12

1
अगर कोई विकल्प हो तो क्या आप जवाब दे सकते हैं yarn upgrade package@version?
बेन सिंक्लेयर

201

मैन्युअल रूप से खोलने और इसे बदलने के लिए बिना अपने नवीनतम संस्करण में एक निर्भरता को अपडेट करने के लिए package.json, आप चला सकते हैं

npm install {package-name}@* {save flags?}

अर्थात

npm install express@* --save

संदर्भ के लिए, npm-install


जैसा कि उपयोगकर्ता Vespakoen द्वारा अस्वीकार किए गए संपादन पर नोट किया गया है , इस तरह से कई पैकेजों को अपडेट करना भी संभव है:

npm install --save package-nave@* other-package@* whatever-thing@*

वह शेल के आधार पर वन-लाइनर भी लगाता है npm outdated। कोड और स्पष्टीकरण के लिए संपादन देखें ।


पुनश्च: मैं भी package.jsonउस तरह की चीजों के लिए मैन्युअल रूप से संपादित करने से नफरत करता हूं ;)


8
यह समाधान महान है। किसी भी नए मॉड्यूल को स्थापित किए बिना नवीनतम संस्करण में एकल पैकेज को स्पष्ट रूप से अपडेट करने का त्वरित और आसान तरीका। मुझे npm-check-updates पसंद हैं, लेकिन यह सभी पैकेजों को अद्यतित रखने की कोशिश करता है , जो हमेशा वह नहीं होता जो आप चाहते हैं।
Chev

यह मेरे लिए काम नहीं करता हैnpm install react-native-image-picker@* --save
हैरी मोरेनो

1
@Chev: ncu किसी एकल या कई पैकेज को आसानी से लक्षित कर सकता है ncu express mocha chai। आप के साथ संकुल को भी बाहर कर सकते हैं ncu -x mocha। मैं मानता हूं कि उपरोक्त एकल पैकेज को अद्यतन करने के लिए सबसे सरल उपाय है।
राइन रेवरे

2
मैंने अभी भी कुछ इसी तरह का प्रयोग किया है, संभवतः अधिक हाल के डॉक्स से ... "*" के बजाय "नवीनतम" का उपयोग करता हैnpm install {package-name}@latest {save flags}
ड्रू थॉमस

1
बहुत धन्यवाद, यह समाधान बहुत अच्छा है और ठीक वही है जिसकी मुझे तलाश है। यह आपको हर दूसरे निर्भरता को अद्यतन करने की आवश्यकता के बिना एक विशेष पैकेज को अपडेट करने की अनुमति देता है जिससे अप्रत्याशित समस्याएं हो सकती हैं!
दानी वेहबे

90

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

संस्करण लेंस

यहां छवि विवरण दर्ज करें


2
यहाँ उदात्त पाठ 3 संस्करण है: github.com/yavorsky/Bump , हालांकि थोड़ा धीमा है।
अलेक्जेंडर किम

4
खूबसूरती से काम किया, अगर यह किसी के लिए भी स्पष्ट नहीं है, तो यह केवल आपके पैकेज में संस्करणों की जांच करता है। नवीनतम npm रिपॉजिटरी संस्करणों के खिलाफ json, और आपको अपने पैकेज में पाठ सामग्री को अद्यतन करने के लिए एक संस्करण पर क्लिक करने की अनुमति देता है। फिर आपको नए संस्करणों को स्थापित करने के लिए npm को बताने के लिए "npm अद्यतन" चलाने की आवश्यकता है।
मैट जीएन

2
ध्यान दें कि पैकेज एंट्री पर माउस मँडरा द्वारा अंतर्निहित विज़ुअल स्टूडियो कोड में एक संक्षिप्त विवरण के साथ पैकेज निर्भरता के नवीनतम संस्करण को देखना पहले से ही संभव है: बिल्ट-इन पैकेज वर्जन हिंट
ग्यूरोल कैनबक ऑग

1
ध्यान दें कि कोड लेंस लिंक पर क्लिक करने पर यह स्वचालित रूप से पैकेज स्थापित नहीं करता है! यह केवल package.json संस्करण पाठ को अद्यतन करता है।
आरए

59

यह npm 1.3.15 के रूप में काम करता है।

"dependencies": {
  "foo": "latest"
}

10
जानकार अच्छा लगा। मेरा अनुमान है कि यह आम तौर पर किसी भी उत्पादन साइट पर एक बुरा अभ्यास होगा क्योंकि यह संभावित रूप से पीछे-असंगत संस्करणों को स्वचालित रूप से अपडेट करेगा। '~ 2' सिंटैक्स आपको किसी दिए गए प्रमुख संस्करण संख्या में लॉक करता है, जो निम्नलिखित सेवर के पीछे संगत होगा।
रीन रेवरे

1
आप हमेशा ठेस पर डिप्स को फ्रीज कर सकते हैं। उस के लिए एक आदेश Theres। -2 ठीक लगता है।
तोबियस कुडनिक

5
मैं npm shrinkwrapडिप्स को फ्रीज करने के साथ-साथ इसका उपयोग करना पसंद करता हूं ।
डेनियलबुल

यदि हम ऐसा करते हैं, तो हम उस पैकेज के वास्तविक संस्करण को कैसे जानते हैं? कहते हैं कि मेरे पास एक प्रविष्टि थी "react": "16.9.0"और फिर मैंने इसमें नवीनतम जोड़ा और भाग गया npm i, इसके बाद मुझे कैसे पता चला कि मेरी परियोजना में अब कौन सा संस्करण प्रतिक्रिया है? के बाद से "react":"latest"क्या मेरी package.json में छोड़ दिया है, के बाद नहीं एक नंबर भी मैंने किया थाnpm i
theprogrammer

52
  1. *अस्थिर सहित नवीनतम रिलीज़ के लिए संस्करण के रूप में उपयोग करें
  2. latestनवीनतम स्थिर संस्करण के लिए संस्करण परिभाषा के रूप में उपयोग करें
  3. ठीक से नवीनतम स्थिर संस्करण संख्या का उपयोग करके package.json को संशोधित करें LatestStablePackages

यहाँ एक उदाहरण है:

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

2
यह सबसे अच्छा जवाब है।
पेजा

1
इसका स्वीकृत उत्तर होना चाहिए
EigenFool

अभी भी सबसे सुरक्षित तरीका है। अच्छा उत्तर।
क्लेविस

43

ऊपर दिए गए सबसे अच्छे उत्तर के साथ एकमात्र कैविएट यह पाया गया है कि यह मॉड्यूल को नवीनतम संस्करण में अपडेट करता है। इसका मतलब है कि यह एक अस्थिर अल्फा बिल्ड में अपडेट हो सकता है।

मैं उस npm-check-updates उपयोगिता का उपयोग करूंगा। मेरे समूह ने इस उपकरण का उपयोग किया और इसने स्थिर अद्यतन स्थापित करके प्रभावी रूप से काम किया।

जैसा कि इटियेन ने कहा था: इस के साथ स्थापित करें और चलाएं:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 

3
rm -rf node_modulesइससे पहले कि npm installमेरे लिए कुछ निर्भरता चेतावनी से छुटकारा पा लिया।
माइकल कोल

1
अगर आपके पास package.json में "*" है, तो बस npm-check-updates चलाने से पहले इसे "0" या "0.0" या "0.0.0" में बदल दें।
igorpavlov

यह इसे करने का सबसे आसान तरीका है। कोई झंझट नहीं रैसलर। एक जादू की तरह काम करता है। आपके सभी डिप्स ठीक से अपडेट और इंस्टॉल हो जाते हैं। Thx
योरको गोंजालेस

38

यह देखने के लिए कि किस पैकेज में नए संस्करण उपलब्ध हैं, तो निम्न कमांड का उपयोग करें:

npm outdated

केवल एक निर्भरता को अपडेट करने के लिए बस निम्नलिखित कमांड का उपयोग करें:

npm install yourPackage@latest --save

उदाहरण के लिए:

मेरी package.jsonफ़ाइल पर निर्भरता है:

"@progress/kendo-angular-dateinputs": "^1.3.1",

तो मुझे लिखना चाहिए:

npm install @progress/kendo-angular-dateinputs@latest --save

अच्छा है, लेकिन ऐसा लगता है कि अपडेट के लिए --save (या --save-dev) अनिवार्य नहीं है।
बुरुच

35

मुझे वास्तव में पसंद है कि एनपीएम-अपग्रेड कैसे काम करता है। यह एक साधारण कमांड लाइन उपयोगिता है जो आपकी सभी निर्भरताओं से गुजरती है और आपको नवीनतम संस्करण की तुलना में वर्तमान संस्करण को देखने और यदि आप चाहते हैं तो अपडेट करने की सुविधा देती है।

npm-upgradeआपकी परियोजना के रूट में ( package.jsonफ़ाइल के बगल में ) चलने के बाद क्या होता है, इसका एक स्क्रीनशॉट इस प्रकार है:

npm उन्नयन उदाहरण

प्रत्येक निर्भरता के लिए आप अपग्रेड करना, अनदेखा करना, चैंज देखना, या प्रक्रिया समाप्त करना चुन सकते हैं। इसने मेरे लिए अब तक बहुत अच्छा काम किया है।

EDIT: स्पष्ट होने के लिए यह एक तृतीय पक्ष पैकेज है जिसे कमांड के काम करने से पहले स्थापित करने की आवश्यकता है। यह स्वयं npm के साथ नहीं आता है:

npm install -g npm-upgrade

उसके बाद किसी प्रोजेक्ट की जड़ से, जिसमें एक पैकेज। Json फ़ाइल हो:

npm-upgrade

डॉक्स को देखते हुए ऐसा प्रतीत होता है कि इसे केवल स्थानीय निर्भरता के साथ काम करने के लिए बनाया गया था
manncito

2
हाँ, बस दूसरों के लिए उल्लेख किया है। जवाब के खिलाफ कोई शिकायत नहीं :)
मार्टिन श्नाइडर

2
हम्म, npm-upgradeमेरे लिए काम नहीं किया, लेकिन npm upgradeकिया और इसने मेरे पैकेज को अपडेट किया। जेसन फाइल जो वास्तव में मैं देख रहा था।
ग्रैंडाइज़र

हम्म दिलचस्प है, क्या कोई त्रुटि थी? उपयोग करने के पीछे विचार यह npm-upgradeहै कि आपको ठीक वही देखने को मिलता है जिसे अपग्रेड किया जा रहा है और जिसे चुनकर अपग्रेड किया जाता है। npm upgradeज्यादातर लोगों के लिए ठीक काम हो सकता है लेकिन कभी-कभी आपको अपग्रेड करते समय थोड़ा अधिक नियंत्रण रखने की आवश्यकता होती है।
मैनकिटो

1
आप इसे npx के साथ भी इस्तेमाल कर सकते हैं: npx npm-upgrade- काफी अच्छा! :)
एक्स-रे

22

यहाँ अर्थ वर्जन नंबरों से मिलान करने के लिए एक बेसिक रेगेक्स है ताकि आप जल्दी से उन सभी को तारांकन चिह्न से बदल सकें।

शब्दार्थ संस्करण Regex

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

कैसे इस्तेमाल करे

JSON फ़ाइल में उन पैकेज संस्करणों को चुनें जिन्हें आप बदलना चाहते हैं।

स्क्रीनशॉट: उस टेक्स्ट को चुनें जिसे आप बदलना चाहते हैं

ऊपर रेगेक्स इनपुट करें और सत्यापित करें कि यह सही टेक्स्ट से मेल खा रहा है।

स्क्रीनशॉट: ऊपर सेवर रेगेक्स इनपुट करें

सभी मैचों को एक तारांकन के साथ बदलें।

स्क्रीनशॉट: पैकेज संस्करणों को एक तारांकन के साथ बदलें

Daud npm update --save


पैकेज नाम में नंबर होने पर नहीं। यानी: babel-preset-es2015, babel-preset-stage-0, hex2rgba। हो सकता है कि ('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
भीख मांगने

1
किसी भी संपादक पर, जो कई कैरेट (ej Sublime Text) का समर्थन करता है, आप पहले का चयन कर सकते हैं :और ctrl+dकई बार दबा सकते हैं जब तक कि आप उन सभी का चयन नहीं करते हैं, तब संस्करण संख्या पर जाएं (दायाँ तीर 2 बार दबाएं) और ctrl स्पेस दबाएं, फिर लिखें"*"
इवान कास्टेलनोस

15

मुझे हाल ही में कई परियोजनाओं को अपडेट करना पड़ा जो npm और package.json का उपयोग कर रहे थे उनके gruntfile.js जादू के लिए। निम्नलिखित बैश कमांड (मल्टीलाइन कमांड) ने मेरे लिए अच्छा काम किया:

npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev

यहाँ विचार: npm outdatedउत्पादन को json के रूप में पाइप करने के लिए , jq
(jq एक json कमांड लाइन पार्सर / क्वेरी टूल है)
( --depthतर्क के लिए उपयोग का नोटिस npm outdated)
jq आउटपुट को केवल शीर्ष स्तर के पैकेज के नाम से ही छीन लेगा।
अंत में xargs प्रत्येक LIBRARYNAME को एक समय में एक npm install LIBRARYNAME --save-devकमांड में रखता है

उपर्युक्त एक मशीन चलाने पर मेरे लिए क्या काम किया गया है: नोड = v0.11.10 ओएसएक्स = 10.9.2 एनपीएम = 1.3.44

यह आवश्यक है:
xargs http://en.wikipedia.org/wiki/Xargs (मेरी मशीन का मूल निवासी जो मुझे विश्वास है)
और
jq http://stedolan.github.io/jq/ (मैंने इसे स्थापित किया brew install jq)

नोट: मैं केवल अपडेट किए गए पुस्तकालयों को संकुल कुंजी के अंदर सहेजता हूं। devDependanciesउपयोग करके json कुंजी के अंदर --save-dev, यह मेरी परियोजनाओं की आवश्यकता थी, काफी संभव नहीं।

बाद में मैं जाँचता हूँ कि सब कुछ एक साधारण से ग्रेवी है

npm outdated --depth=0

इसके अलावा, आप मौजूदा टॉपलेट इंस्टॉल किए गए लाइब्रेरी संस्करणों की जांच कर सकते हैं

npm list --depth=0

मैं jq से प्यार करता हूँ और इसे लगभग हर रोज इस्तेमाल करता हूँ, लेकिन इस उद्देश्य के लिए मैं awkइसके बजाय सरल का उपयोग करता हूँ :npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-dev
Qorbani

1
मैं उपयोग कर रहा हूंcat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-dev
रिचर्ड अयोटे

15

यदि आप एक सुंदर (टर्मिनल के लिए) इंटरेक्टिव रिपोर्टिंग इंटरफ़ेस के माध्यम से एक सौम्य दृष्टिकोण का उपयोग करना चाहते हैं तो मैं npm-check का उपयोग करने का सुझाव दूंगा

यह एक हथौड़ा से कम है और आपको अधिक निर्भर ज्ञान देता है, और आपके निर्भरता अपडेट पर नियंत्रण करता है।

आपको यहां एक स्क्रीनशॉट (npm-check के लिए git पृष्ठ से स्क्रैप किया गया) का इंतजार करने का स्वाद देने के लिए:

यहां छवि विवरण दर्ज करें


14

में यह फीचर पेश किया गया है npm v5। npm का उपयोग कर अद्यतन करें npm install -g npm@latestऔर

अद्यतन करने के लिए package.json

  1. हटाएं /node_modulesऔरpackage-lock.json (if you have any)

  2. दौड़ो npm update। यह निर्भरता पैकेज को अद्यतन करेगा । वीर्य के आधार पर नवीनतम के लिए ।

बहुत नवीनतम संस्करण के लिए अद्यतन करने के लिए। तुम साथ जा सकते होnpm-check-updates


13

यदि आप यार्न का उपयोग करते हैं, तो निम्न कमांड सभी पैकेजों को उनके नवीनतम संस्करण में अपडेट करता है:

yarn upgrade --latest

उनके डॉक्स से :

upgrade --latestआदेश उन्नयन उन्नयन आदेश के रूप में ही पैकेज, लेकिन संस्करण रेंज package.json में निर्दिष्ट ध्यान नहीं देता। इसके बजाय, नवीनतम टैग द्वारा निर्दिष्ट संस्करण का उपयोग किया जाएगा (संभावित रूप से प्रमुख संस्करणों में संकुल को अपग्रेड करना)।


1
निर्भरता को अद्यतन नहीं करता है package.json- github.com/yarnpkg/yarn/issues/4390
वंदेश

13

Npm संस्करण 5.2.0 के रूप में, आपके वैश्विक npm रजिस्ट्री में कोई अतिरिक्त पैकेज स्थापित किए बिना और न ही स्थानीय रूप से आपके आवेदन के लिए एक एकल पंक्ति में इसे चलाने का एक तरीका है। यह npxnpm के साथ बंडल की गई नई उपयोगिता का लाभ उठाकर किया जा सकता है । ( अधिक जानने के लिए यहां क्लिक करें। )

अपनी परियोजना के मूल में निम्नलिखित कमांड चलाएँ:

npx npm-check-updates -u && npm i

मैंने सिर्फ यह कोशिश की और यह काम करता है ... सिवाय इसके कि मुझे npm installवास्तव में नई निर्भरताओं को डाउनलोड करने के लिए दौड़ना पड़े । तो मैं इस अनुमान सिर्फ package.json जब तक मैं कुछ याद कर रहा हूँ अद्यतन करता है
owsega

@owsega, आप बिल्कुल सही कह रहे हैं, धन्यवाद! मैंने npm installनिर्भरता अपडेट होने के बाद अपने उत्तर को भी चलाने के लिए संशोधित किया।
ilakam

13

मैं npm-checkइसे प्राप्त करने के लिए उपयोग करता हूं ।

npm i -g npm npm-check
npm-check -ug #to update globals
npm-check -u #to update locals

यहां छवि विवरण दर्ज करें

एक और उपयोगी कमांड सूची जो सटीक संस्करण संख्या को अंदर रखेगी package.json

npm cache clean
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g #update globals
ncu -ua #update locals
npm i

यह ncu -uऔर नहीं ncu -uaदूसरी अंतिम पंक्ति में। मैं संपादित नहीं कर सकता क्योंकि एक वर्ण परिवर्तन की अनुमति नहीं है। वैसे बहुत मददगार है।
सोहेल अहमद

10

Updtr!

Npm पुरानी के आधार पर, updtr नवीनतम संस्करण स्थापित करता है और प्रत्येक निर्भरता के लिए npm परीक्षण चलाता है। यदि परीक्षण सफल हो जाता है, तो updtr आपके पैकेज के लिए नया संस्करण नंबर सहेजता है। json। यदि परीक्षण विफल हो जाता है, तथापि, updtr अपने परिवर्तनों को वापस रोल करता है।

https://github.com/peerigon/updtr


9

आदेश है कि मैं अद्यतन करने के लिए इस्तेमाल किया था package.jsonके लिए NPM 3.10.10:

npm install -g npm-check-updates
ncu -a
npm install

पृष्ठभूमि:

मैं @ josh3736 से नवीनतम कमांड का उपयोग कर रहा था लेकिन मेरा package.jsonअपडेट नहीं था। मैंने तब वर्णन पाठ पर ध्यान दिया जब वह चल रहा था npm-check-updates -u:

निम्नलिखित निर्भरता इसकी घोषित संस्करण सीमा से संतुष्ट है, लेकिन स्थापित संस्करण पीछे है। आप npm अद्यतन का उपयोग करके अपनी पैकेज फ़ाइल को संशोधित किए बिना नवीनतम संस्करण स्थापित कर सकते हैं। यदि आप वैसे भी अपनी पैकेज फ़ाइल में निर्भरता को अपडेट करना चाहते हैं, तो ncu -a चलाएं।

Npm-check-updates के लिए प्रलेखन पढ़ना आप अंतर देख सकते हैं:

https://www.npmjs.com/package/npm-check-updates

-u, - अपग्रेड: पैकेज फ़ाइल को अधिलेखित करें

-a, --upgradAll: यहां तक ​​कि उन आश्रितों को भी शामिल करें, जिनके नवीनतम संस्करण घोषित सेवर निर्भरता को संतुष्ट करते हैं

npm-check-updatesटाइप करते समय संदेश में देखा गया ncu एक उपनाम है npm-check-updates -u:

[INFO]: You can also use ncu as an alias

Npm-check-updates v3 में, -aडिफ़ॉल्ट व्यवहार है, और पैकेज को ओवरराइट करना है। केवल -uविकल्प के लिए छोड़ दिया गया है।
राइन रेवरे

8

यदि आप उपयोग कर रहे हैं yarn, yarn upgrade-interactiveतो वास्तव में एक चिकना उपकरण है जो आपको अपनी पुरानी निर्भरता देखने की अनुमति दे सकता है और फिर उन लोगों का चयन कर सकता है जिन्हें आप अपडेट करना चाहते हैं।

यार्न का उपयोग करने के लिए और अधिक कारण npm। हे।


यार्न तेजी से आगे बढ़ रहा है, पहले से ही एक 1.0 मारा और उपयोग करने के लिए एक बहुत खुशी है। यह नया चयनित उत्तर होना चाहिए।
जोश हबदास

1
निर्भरता को अद्यतन नहीं करता है package.json- github.com/yarnpkg/yarn/issues/4390
वंदेश

5

उपरोक्त आदेश असुरक्षित हैं क्योंकि संस्करण बदलते समय आप अपने मॉड्यूल को तोड़ सकते हैं। इसके बजाय मैं निम्नलिखित सलाह देता हूं

  • npm shrinkwrapकमांड का उपयोग करके पैकेज में वास्तविक वर्तमान नोड मॉड्यूल संस्करण सेट करें ।
  • नवीनतम संस्करण के लिए प्रत्येक निर्भरता को अपडेट करें अगर आईटी https://github.com/bahmutov/next-update कमांड लाइन टूल का उपयोग करके आपके TESTS को नहीं बनाता है
npm स्थापित -g अगला-अद्यतन
// अपने पैकेज से
अगली अद्यतन

1
पिछड़े-असंगत बदलावों को सक्रिय परियोजनाओं के लिए सुरक्षित करने की आवश्यकता है। ओपी एक नई परियोजना शुरू करने से अधिक चिंतित है, जहां आप बाद के बजाय अब चीजों को तोड़ना चाहते हैं और काम करने के लिए नवीनतम संस्करण हैं।
राइन रेवरे

3

यदि आप npm 5 और नोड 8 का उपयोग कर रहे हैं, तो कमांड का पालन करें

npm अपडेट - save


2
updateआदेश मूल परिभाषा से परे निर्भरता टक्कर प्रतीत नहीं होता है। अगर package.jsonघोषित करता "1.2.3"है तो आपको नहीं मिलेगा 1.2.4। यह अच्छा या बुरा हो सकता है :)
belvaro González

3

निम्नलिखित कोड (जिसे स्वीकार किया गया था) ने मुझे कुछ लिखा जैसे "यह बहुत लंबा ब्ला-ब्लाह लेता है" और कुछ भी नहीं किया। संभवतः वैश्विक ध्वज का उपयोग करना समस्या थी, idk।

npm i -g npm-check-updates
ncu -u
npm install

मैंने अपने पाठ संपादक का उपयोग करने और इसके बजाय अर्ध-मैनुअल दृष्टिकोण का पालन करने का फैसला किया।

मैंने अपने package.jsonनोटपैड ++ टेक्स्ट एडिटर की देव निर्भरता से इस तरह (सिर्फ बहुत लंबा) एक सूची कॉपी की :

"browserify": "10.2.6",
"expect.js": "^0.3.1",
"karma": "^0.13.22",
"karma-browserify": "^5.2.0",

मैंने खोज मोड को नियमित अभिव्यक्ति पर सेट किया, ^\s*"([^"]+)".*$पैकेज नाम प्राप्त करने के लिए पैटर्न का उपयोग किया और इसे प्रतिस्थापित किया npm uninstall \1 --save-dev \nnpm install \1 --save-dev। "सभी को बदलें" पर क्लिक किया। ओटपुट यह था:

npm uninstall browserify --save-dev 
npm install browserify --save-dev
npm uninstall expect.js --save-dev 
npm install expect.js --save-dev
npm uninstall karma --save-dev 
npm install karma --save-dev
npm uninstall karma-browserify --save-dev 
npm install karma-browserify --save-dev

मैंने इसे बैश और हिट एंट्री में वापस कॉपी किया। सब कुछ उन्नत और ठीक काम कर रहा था। बस इतना ही।

"browserify": "^16.1.0",
"expect.js": "^0.3.1",
"karma": "^2.0.0",
"karma-browserify": "^5.2.0",

मुझे नहीं लगता कि यह एक बड़ी बात है, क्योंकि आपको इसे केवल हर अब और फिर करना है, लेकिन आप आसानी से एक स्क्रिप्ट लिख सकते हैं, जो package.jsonआपके पैकेज को अपग्रेड करता है और अपग्रेड करता है। मुझे लगता है कि यह इस तरह से बेहतर है, क्योंकि आप अपनी सूची को संपादित कर सकते हैं यदि आपको किसी विशेष चीज़ की आवश्यकता है, उदाहरण के लिए एक लीब का वर्तमान संस्करण।


1
एनपीएम-चेक-अपडेट के साथ, हैंगिंग टर्मिनल विंडोज पर एक ज्ञात मुद्दा है। जोड़ने का प्रयास करें --packageFile package.jsonताकि स्टड के लिए इंतजार न करना जानता हो।
राणे रेवरे

@RaineRevere धन्यवाद!
inf3rno


3

मुझे एनपीएम के हालिया संस्करण के लिए एक और समाधान मिला। मैं जो करना चाहता हूं वह स्पष्टतम नवीनतम संस्करण संख्या के साथ सभी "*" निर्भरता को बदलना है। मेरे द्वारा चर्चा की गई विधियों में से किसी ने भी काम नहीं किया है।

मैंने क्या किया:

  1. सभी "*" को "^ 0.0.0" से बदलें
  2. Daud npm-check-updates -u

Package.json में सब कुछ अब अंतिम संस्करण में अपडेट किया गया है।


3

यदि आप वैश्विक npm-check-updates स्थापित नहीं करना चाहते हैं, तो आप बस उसे चला सकते हैं:

node -e "const pk = JSON.parse(require('fs').readFileSync('package.json', 'utf-8'));require('child_process').spawn('npm', ['install', ...Object.keys(Object.assign({},pk.dependencies, pk.devDependencies)).map(a=>a+'@latest')]).stdout.on('data', d=>console.log(d.toString()))"

2

वैकल्पिक है

"dependencies":{
    "foo" : ">=1.4.5"
}

हर बार जब आप npm अपडेट का उपयोग करते हैं, तो यह स्वचालित रूप से नवीनतम संस्करण में अपडेट हो जाता है। अधिक संस्करण सिंटैक्स के लिए, आप यहां देख सकते हैं: https://www.npmjs.org/doc/misc/semver.html


वर्जनिंग का एक कारण नए प्रमुख संस्करणों से पिछड़े-असंगत परिवर्तनों को रोकना है। मैं इसके या '*' वर्जन नंबरों के खिलाफ सिफारिश करूंगा। जब यह होता है तो नियंत्रण को बनाए रखते हुए ओपी प्रक्रिया को आसान बनाने से संबंधित होता है।
राणे रेवरे

2

अतिरिक्त पैकेज के बिना समाधान

प्रत्येक निर्भरता के संस्करण को इसमें बदलें *:

"dependencies": {
    "react": "*",
    "react-google-maps": "*"
  }

फिर चला npm update --save

आपके कुछ पैकेज अपडेट किए गए, लेकिन कुछ नहीं?

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "*"
  }

यह मुश्किल हिस्सा है, इसका मतलब है कि "प्रतिक्रिया" का आपका स्थानीय संस्करण नवीनतम की तुलना में कम था। इस मामले में npm डाउनलोड और "प्रतिक्रिया" पैकेज अद्यतन किया। हालाँकि "प्रतिक्रिया-गूगल-मैप्स" का आपका स्थानीय संस्करण सबसे नया है।

यदि आप अभी भी अपरिवर्तित "अपडेट" करना चाहते हैं *, तो आपको इन मॉड्यूल को node_modulesफ़ोल्डर से हटाना होगा ।

उदा node_modules/react-google-maps

अंत में फिर से दौड़ें npm update --save

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "^4.10.1"
  }

npm update --save-devयदि आप विकास निर्भरता को अद्यतन करना चाहते हैं, तो चलाना न भूलें ।


1

यदि आप Github का उपयोग कर रहे हैं तो ग्रीनकीपर। https://greenkeeper.io/

यह गिथब एकीकरण और चीजों को स्थापित करने के लिए अविश्वसनीय रूप से आसान है। स्थापित होने पर, यह स्वचालित रूप से आपके द्वारा निर्दिष्ट रिपॉजिटरी में पुल अनुरोध बनाता है (या यदि सभी चाहते हैं) और अपने कोड को हमेशा अप-टू-डेट रखता है, आपको मैन्युअल रूप से कुछ भी करने के लिए मजबूर किए बिना। पीआरएस को तब सीआई सेवा पर एक बिल्ड ट्रिगर करना चाहिए और एक सफल या असफल जांच के आधार पर आप यह पता लगा सकते हैं कि क्या मुद्दा ट्रिगर हो रहा है या जब सीआई पास बस पीआर को मर्ज करता है।

हरियाली देनेवाला PR १ ग्रीनकीपर PR २

नीचे, आप देख सकते हैं कि पहला बिल्ड पहले विफल हो गया और एक कमिट के बाद ("नोड v6.9 में अपग्रेड") परीक्षण पास हो गए ताकि मैं अंततः पीआर को मर्ज कर सकूं। बहुत सारे इमोजी के साथ आता है।

एक और विकल्प होगा https://d dependencyci.com/ , हालांकि मैंने इसका गहनता से परीक्षण नहीं किया। पहली नज़र में ग्रीनकीपर सामान्य आईएमओ में बेहतर दिखता है और बेहतर एकीकरण होता है।


1
  • npm पुराना
  • एनपीएम अपडेट

आपको अपने ऐप के लिए नवीनतम वांछित संस्करण प्राप्त करने चाहिए। लेकिन नवीनतम संस्करण नहीं।

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