यदि आवश्यक हो तो एनपीएम चेक और अपडेट पैकेज


471

हमें टीम टेस्ट में कर्मा टेस्ट रनर को एकीकृत करने की आवश्यकता है और इसके लिए मैं चाहूंगा कि sys-इंजीनियरों को छोटी स्क्रिप्ट (पावरशेल या जो भी मिले) दें:

  1. कुछ कॉन्फिगर फ़ाइल से वांछित संस्करण संख्या चुनें (मुझे लगता है कि मैं इसे टिप्पणी के रूप में सही तरीके से रख सकता हूं karma.conf.js)

  2. npm के वैश्विक रेपो में स्थापित कर्म धावक के परिभाषित संस्करण की जाँच करें

  3. यदि यह नहीं है, या स्थापित संस्करण वांछित से अधिक पुराना है: सही संस्करण चुनें और इंस्टॉल करें

  4. चलाओ: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run

तो मेरा असली सवाल यह है: "पैकेज की वांछित संस्करण स्थापित होने पर कोई स्क्रिप्ट में कैसे जांच कर सकता है?"। क्या आपको चेक करना चाहिए, या npm -g installहर बार कॉल करना सुरक्षित है ?

मैं हमेशा नवीनतम उपलब्ध संस्करण को जांचना और स्थापित नहीं करना चाहता, क्योंकि अन्य कॉन्फ़िगरेशन मान असंगत हो सकते हैं

जवाबों:


609

यह जाँचने के लिए कि क्या किसी परियोजना में कोई मॉड्यूल 'पुराना' है:

npm outdated

' आउटडेटेड ' परिभाषित प्रत्येक मॉड्यूल की जाँच करेगा package.jsonऔर देखेगा कि NPM रजिस्ट्री में कोई नया संस्करण है या नहीं।

उदाहरण के लिए, कहना xml2js 0.2.6( node_modulesवर्तमान परियोजना में स्थित ) पुराना है क्योंकि एक नया संस्करण मौजूद है (0.2.7)। तुम देखोगे:

xml2js@0.2.7 node_modules/xml2js current=0.2.6

सभी निर्भरताओं को अद्यतन करने के लिए , यदि आप आश्वस्त हैं कि यह वांछनीय है:

npm update

या, एकल निर्भरता को अद्यतन करने के लिए जैसे xml2js:

npm update xml2js

6
npm updateविशेष रूप से के साथ सावधान रहें npm update -g... यह वह नहीं करता है जो अधिकांश मोर इसे करने की उम्मीद करते हैं! देखें: github.com/npm/npm/issues/6247 और gist.github.com/othiym23/4ac31155da23962afd0e
jbandi

6
@jbandi npm@2.6.1 के रूप में, npm -g updateफिर से उपयोग करने के लिए सुरक्षित है। github.com/npm/npm/issues/6247#issuecomment-92182814
चक ले बट

7
कृपया ध्यान रखें कि npm अपडेट आपके पैकेज को अद्यतन नहीं करेगा। @son ऑलसन के उत्तर द्वारा बताई गई फ़ाइल।
एहतेशाम हसन

5
As of npm@5.0.0, 'npm update' will change package.json to save the new version as the minimum required dependency docs.npmjs.com/cli/update.html
सिडनी

368

npm outdatedउन पैकेजों की पहचान करेगा जिन्हें अपडेट किया जाना चाहिए, और npm update <package name>प्रत्येक पैकेज को अपडेट करने के लिए उपयोग किया जा सकता है। लेकिन npm@5.0.0 से पहले, npm update <package name>आपके पैकेज में संस्करणों को अपडेट नहीं करेंगे। एक मुद्दा है।

सबसे अच्छा वर्कफ़्लो है:

  1. आउट ऑफ डेट पैकेज की पहचान करें
  2. अपने package.json में संस्करणों को अपडेट करें
  3. npm updateप्रत्येक पैकेज के नवीनतम संस्करण को स्थापित करने के लिए चलाएँ

npm-check-updatesइस वर्कफ़्लो की मदद के लिए बाहर की जाँच करें ।

  • Npm-check-updates स्थापित करें
  • भागो npm-check-updatesसूची क्या पैकेज (मूल रूप से चल रहा है के रूप में एक ही बात पुराने हो चुके हैं करने के लिए npm outdated)
  • npm-check-updates -uअपने पैकेज में सभी संस्करणों को अपडेट करने के लिए चलाएँ । Json (यह जादू सॉस है)
  • npm updateअद्यतन पैकेज के आधार पर अपने पैकेज के नए संस्करणों को स्थापित करने के लिए हमेशा की तरह चलाएं

3
npm outdatedसभी पैकेज दिखाएगा .. यहां तक ​​कि अन्य पैकेजों के अंदर भी .. लेकिन वे इस प्रक्रिया से अपडेट नहीं होंगे इसलिए वे हमेशा दिखाई देंगे .. इसलिए बस उपयोग करें npm-check-updates(जैसा कि आपने वास्तव में सिफारिश की है) जो केवल मुख्य पैकेज दिखाता है package.json... यह प्रासंगिक है
davidhq

यार्न के साथ यह बहुत आसान है बस 'यार्न अपग्रेड' टाइप करें।
क्रिस्टोफर ग्रिग

17
मुझे अपने पैकेज मैनेजर को प्रबंधित करने के लिए अपडेट मैनेजर क्यों स्थापित करना चाहिए? क्या हम सहमत नहीं हैं यह मूर्खतापूर्ण है? यह उतना ही सरल होना चाहिए npm install --all-outdatedलेकिन यह नहीं है ...
ADJenks

3
आप npm update --save package_nameपैकेज में नवीनतम बदलाव को सहेजने के लिए हमेशा दौड़ सकते हैं ।
trungk18

एरिक, क्या आप कृपया इस संबंधित एसओ प्रश्न का उत्तर दे सकते हैं , क्योंकि यह अभी भी मेरे लिए दोनों आज्ञाओं के बीच का अंतर है, अर्थात, npm updateबनाम npm-check-updates?
जोहो पिमेंटेल फरेरा

146

एक "ताज़ा" मॉड्यूल भी है जिसे कहा जाता है npm-check:

NPM की जांच

पुरानी, ​​गलत और अप्रयुक्त निर्भरता के लिए जाँच करें।

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

यह निर्भरता को अद्यतन करने के लिए एक सुविधाजनक इंटरैक्टिव तरीका भी प्रदान करता है।


78

एक आसान कदम:

$ npm i -g npm-check-updates && ncu -u && npm i

बस इतना ही। पैकेज के सभी संस्करण package.jsonनवीनतम प्रमुख संस्करण होंगे।

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

यहाँ क्या हो रहा है?

  1. एक पैकेज स्थापित करना जो आपके लिए अपडेट की जांच करता है।

  2. अपने package.json(-udateAll के लिए कम है) में सभी पैकेज संस्करणों को अपडेट करने के लिए इस पैकेज का उपयोग करें ।

  3. संकुल के सभी नए संस्करण स्थापित करें।


3
@imnickvaughn ncuनोड-चेक-अपडेट के लिए खड़ा -aहै और 'अपग्रेड' विकल्प है। यहां सभी विकल्प खोजें: npmjs.com/package/npm-check-updates
एरियन

और क्या होगा अगर मैं ncu जैसे किसी अन्य पैकेज का उपयोग किए बिना इसे एक पंक्ति में करना चाहता हूं?
ADJenks

या ग्लोबल इंस्टॉल के बिना,npx -p npm-check-updates ncu -u
एन्टोजून

68
  • एकल स्थानीय पैकेज को अद्यतन करने के लिए:

    1. पहले अपने पुराने पैकेजों का पता लगाएं:

      npm outdated

    2. फिर उस पैकेज या पैकेज को अपडेट करें जिसे आप मैन्युअल रूप से चाहते हैं:

      npm update --save package_name

इस तरह से अपनी स्थानीय package.json फ़ाइल को अपडेट करना आवश्यक नहीं है ।

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

  • यदि आप अपनी package.jsonफ़ाइल में कुछ संस्करण लिखते हैं और करते हैं:

    npm update package_name

    इस मामले में आपको अपनी package.jsonफ़ाइल में लिखे गए संस्करण के बारे में बस अगला स्थिर संस्करण (वांटेड) मिलेगा ।

और npm list (package_name)आप अपने स्थानीय पैकेजों के वर्तमान संस्करण का पता लगा सकते हैं।


14

एनपीएम कुछ निर्भरता प्रकट फ़ाइलों में कमजोरियों को अद्यतन या ठीक करने की आज्ञा देता है

  • अपने नोड मॉड्यूल में पुरानी या कमजोरियों की जांच करने के लिए कमांड का उपयोग करें।

    npm audit

  • यदि कोई भेद्यता पाई जाती है, तो सभी मुद्दों को ठीक करने के लिए कमांड का उपयोग करें।

    npm audit fix

  • यदि यह आपके लिए काम नहीं करता है तो प्रयास करें

    npm audit fix -f, यह आदेश सभी कमजोरियों को लगभग ठीक कर देगा। कुछ निर्भरताएँ या भटकावियाँ पैकेज-लॉक.जसन फ़ाइल में बंद होती हैं , इसलिए हम -fउन्हें अपडेट करने के लिए ध्वज का उपयोग करते हैं।

  • आप बल लेखा परीक्षा ठीक उपयोग करने के लिए तो आप उन्हें मैन्युअल रूप में बदल कर अपनी निर्भरता संस्करणों ठीक कर सकते हैं नहीं करना चाहते हैं पैकेज-lock.json और package.json फ़ाइल। फिर भागो

npm update && npm upgrade



10

कोई अतिरिक्त पैकेज नहीं, सिर्फ पुराने की जांच करने और जो हैं, उन्हें यह कमांड अपडेट करेगा:

npm install $(npm outdated | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@latest' | xargs echo)


अच्छा सामान आदमी, धन्यवाद!
drKreso

यह एक महान जवाब है क्योंकि इसे किसी भी शेल स्क्रिप्ट में डाला जा सकता है ताकि किसी और पैकेज को स्थापित किए बिना भरोसा किए बिना इस कदम को स्वचालित किया जा सके।
जनकपंक

4

Npm संकुल (विश्व स्तर पर या स्थानीय रूप से) @versionस्थापित करते समय आप एक संस्करण को स्थापित करने के लिए परिभाषित करने के लिए वाक्यविन्यास का उपयोग करके एक विशिष्ट संस्करण को परिभाषित कर सकते हैं ।

दूसरे शब्दों में, करना: npm install -g karma@0.9.2 यह सुनिश्चित करेगा कि केवल 0.9.2 स्थापित है और पहले से मौजूद होने पर इसे फिर से स्थापित नहीं करेगा।

सलाह के एक शब्द के रूप में, मैं सुझाव दूंगा कि आप जहां भी हों, वैश्विक npm संस्थापनों से बचें। बहुत से लोग महसूस नहीं करते हैं कि यदि कोई निर्भरता बिन फ़ाइल को परिभाषित करती है, तो यह ./node_modules/.bin/ पर स्थापित हो जाती है। अक्सर, एक स्थापित मॉड्यूल के स्थानीय संस्करण का उपयोग करना बहुत आसान है जो आपके पैकेज में परिभाषित है। वास्तव में, npm स्क्रिप्ट आपके पथ पर ./node_modules/.bin जोड़ देगा।

एक उदाहरण के रूप में, यहाँ एक package.json है, जब मैं npm install && npm testचलाऊंगा तो मेरे पैकेज में परिभाषित कर्म के संस्करण को स्थापित करूंगा। json, और testस्क्रिप्ट चलाते समय कर्म के उस संस्करण का उपयोग करें (नोड_मॉड्यूल्स / .bin / कर्म पर स्थापित)।

{
 "name": "myApp",
 "main": "app.js",
 "scripts": {
   "test": "karma test/*",
 },
 "dependencies": {...},
 "devDependencies": {
   "karma": "0.9.2"
 }
}

यह आपको आपके पैकेज का लाभ देता है। उपयोग करने के लिए कर्म के संस्करण को परिभाषित करने वाला जसन इस सीआई बॉक्स पर वैश्विक रूप से उस विन्यास को रखने के लिए नहीं है।


testस्क्रिप्ट में क्या है ? क्या आप कृपया मुझे एक सुराग दे सकते हैं कि आप इसे स्क्रिप्ट के साथ कैसे स्थापित कर सकते हैं।
iLemming

1
पैकेज को देखें। json। "स्क्रिप्ट" संपत्ति के तहत, आप एक और संपत्ति, "परीक्षण" को परिभाषित कर सकते हैं जिसका मूल्य एक कमांड है जिसे आप टाइप करते समय चलाना चाहते हैं npm test। npm डॉक्स यहां बहुत अच्छे हैं: npmjs.org/doc/scripts.html
addisonj

4

Npm@5.0.0+ के अनुसार आप बस कर सकते हैं:

npm update <package name>

इससे फाइल अपने आप अपडेट हो जाएगी package.json। हमें नवीनतम संस्करण को मैन्युअल रूप से अपडेट नहीं करना है और फिर उपयोग करना हैnpm update <package name>

आप अभी भी पुराने व्यवहार का उपयोग कर सकते हैं

npm update --no-save

( संदर्भ )


1

वास्तव में सिर्फ एक पैकेज एनसीयू स्थापित करने के लिए अद्यतन करें और फिर इसे केवल उस पैकेज के लिए चलाएं। यह असली नवीनतम से टकराएगा।

npm install -g npm-check-updates

ncu -f your-intended-package-name -u

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