npm स्थापित बनाम अद्यतन - क्या अंतर है?


जवाबों:


654

के बीच अंतर NPM स्थापित और NPM अद्यतन पैकेज संस्करणों में निर्दिष्ट की हैंडलिंग package.json :

{
  "name":          "my-project",
  "version":       "1.0",                             // install   update
  "dependencies":  {                                  // ------------------
    "already-installed-versionless-module":  "*",     // ignores   "1.0" -> "1.1"
    "already-installed-semver-module":       "^1.4.3" // ignores   "1.4.3" -> "1.5.2"
    "already-installed-versioned-module":    "3.4.1"  // ignores   ignores
    "not-yet-installed-versionless-module":  "*",     // installs  installs
    "not-yet-installed-semver-module":       "^4.2.1" // installs  installs
    "not-yet-installed-versioned-module":    "2.7.8"  // installs  installs
  }
}

सारांश : केवल एक बड़ा अंतर यह है कि फजी संस्करण के साथ पहले से ही स्थापित मॉड्यूल ...

  • द्वारा नजरअंदाज कर दिया जाता है npm install
  • द्वारा अद्यतन किया जाता है npm update

अतिरिक्त रूप से : डिफ़ॉल्ट रूप से installऔर updateअलग-अलग तरीके से निर्भरता को संभालते हैं

  • npm installहोगा / अद्यतन को स्थापित devDependencies जब तक --productionझंडा जोड़ा जाता है
  • npm updateहोगा उपेक्षा devDependencies जब तक --devझंडा जोड़ा जाता है

आखिर क्यों इस्तेमाल करें npm install?

क्योंकि npm installअधिक तब होता है जब आप अपनी निर्भरता को संभालने के अलावा देखते हैं package.json। जैसा कि आप npm स्थापित में देख सकते हैं ...

  • मैन्युअल रूप से नोड-मॉड्यूल स्थापित करें
  • उन्हें वैश्विक के रूप में सेट करें (जो उन्हें शेल के PATHउपयोग में डालता है )npm install -g <name>
  • git टैग द्वारा वर्णित कुछ संस्करण स्थापित करें
  • git url से संस्थापित करें
  • एक पुनर्स्थापना के साथ मजबूर करें --force

20
और किस बारे में ~1.3?
ऑफिशो

6
क्या होगा यदि संस्करण ^ 5.0.9 जैसा है? और क्या यह संभव है npm install --save somePackage* निर्भरता को बचाने के लिए?
क्विज़

5
मैं यह भी ध्यान देता हूं कि स्क्रिप्ट postinstallइंस्टॉल पर चलती हैं, लेकिन अपडेट पर नहीं।
माइकल मार्विक

2
तो installऔर updateGit यूआरएल, Git टैग, इत्यादि में निर्दिष्ट स्थान पर अलग ढंग से काम package.jsonतो यह उदाहरण के लिए उन मामलों को जोड़ने के लिए बहुत अच्छा होगा।
joeytwiddle

2
@ फजी वर्जनिंग में टिल्डो का अर्थ है "इस पैकेज के नवीनतम माइनर (बगफिक्स) रिलीज के लिए अपडेट", लघु संस्करण संस्करण में अंतिम संख्या है, अर्थात 1.3.0 -> 1.3.1यह इसके समान है ^1.3.0, जहां ^अपडेट प्रमुख संस्करण, यानी 1.3.0 -> 1.4.0
बोयन कुशलेव

82

npm स्थापित उन सभी मॉड्यूल को स्थापित करता है जो package.jsonफ़ाइल और उनकी निर्भरता पर सूचीबद्ध होते हैं ।

npm अद्यतनnode_modules निर्देशिका और उनकी निर्भरता में सभी संकुल अद्यतन करता है।

एनपीएम इंस्टॉल एक्सप्रेस केवल एक्सप्रेस मॉड्यूल और इसकी निर्भरता स्थापित करता है।

npm अपडेट एक्सप्रेस अपडेट एक्सप्रेस एक्सप्रेस मॉड्यूल (npm@2.x से शुरू होकर, यह इसकी निर्भरता को अपडेट नहीं करता है)।

इसलिए अपडेट तब है जब आपके पास पहले से ही मॉड्यूल है और नया संस्करण प्राप्त करना चाहते हैं।


5
यदि आप किसी विशेष संस्करण को पैकेज.जोन फ़ाइल में निर्दिष्ट नहीं करते हैं, तो npm इंस्टॉल को एक मॉड्यूल का नवीनतम संस्करण मिलेगा। तो यह एक तरह का अपडेट है।
सईद

11
तो मुझे क्या उपयोग करना चाहिए, npm installया npm update? या, दूसरे शब्दों में, मैं अब उपयोग कर रहा हूं npm installऔर यह अद्यतन करने के लिए भी लगता है, क्या कोई कारण है कि मुझे कभी क्यों उपयोग करना चाहिए npm update?
बोरक बर्नार्ड

4
तो updateहमेशा पैकेज.जॉसन की परवाह किए बिना, नवीनतम संस्करण में अपडेट होगा, जबकि installपैकेज.जॉन में दिए गए संस्करण का सम्मान करेगा?
बोरक बर्नार्ड

1
updateमॉड्यूल का नवीनतम संस्करण इंस्टॉल (या अपडेट) करता है। installमॉड्यूल के नवीनतम संस्करण को स्थापित करता है यदि इसे प्रस्तुत नहीं किया गया है तो वर्तमान संस्करण रहता है।
टेनफी

11
@Borek npm updateआपके पैकेज के आधार पर नवीनतम संस्करण में अपडेट होगा। इसे ध्यान दिए बिना। यदि आपके पास "एक्सप्रेस": "3.x" है और आप संस्करण 3.1.0 पर हैं, तो यह नवीनतम 3.x टैग में अपडेट हो जाएगा। यदि 4.x संस्करण है, तो यह नवीनतम स्थापित नहीं करेगा।
gocochard

47

ज्यादातर मामलों में, यह npm पर प्रकाशित मॉड्यूल के नवीनतम संस्करण को स्थापित करेगा।

npm install express --save

या नवीनतम संस्करण उपयोग के लिए मॉड्यूल को उन्नत करने के लिए बेहतर:

npm install express@latest --save --force

--save: पैकेज आपकी निर्भरता में दिखाई देगा।

अधिक जानकारी: npm-install


11
npm install express@latest --save --forceजैसा मैं चाहता था वैसा ही हुआ।
थॉमसरेजी

2
ज्यादातर मामलों में? कोई अन्य मामले?
दिमित्री ज़ैतसेव

9

कई भेदों का उल्लेख पहले ही किया जा चुका है। यहाँ एक और है:

चल रहा है npm installअपने स्रोत निर्देशिका के शीर्ष पर विभिन्न लिपियों चलेंगे: prepublish, preinstall, install, postinstall। ये स्क्रिप्ट क्या करते हैं, इस पर निर्भर करते हुए, npm installकेवल निर्भरता स्थापित करने की तुलना में काफी अधिक काम किया जा सकता है।

मेरे पास सिर्फ एक उपयोग का मामला है जहां prepublishकॉल makeकिया Makefileगया था और अगर package.jsonअपडेट हुआ तो निर्भरता लाने के लिए डिज़ाइन किया गया था । npm installभीतर से कॉल Makefileकरने पर अनंत पुनरावृत्ति हो सकती है, जबकि कॉलिंग npm updateने ठीक काम किया, सभी निर्भरताएं स्थापित कीं ताकि निर्माण को आगे बढ़ाया जा सके, भले ही makeइसे सीधे कहा जाए।


1
एक निहितार्थ यह है कि यदि आपने अपडेट किया है, उदाहरण के लिए, आपके redisमॉड्यूल, और other_moduleपुराने संस्करण की आवश्यकता है redis, npm install other_moduleतो गारंटी other_moduleहोगी कि पुराने संस्करण का उपयोग करेगा। other_module/node_modules/redisयदि आवश्यक हो तो इसे जोड़ सकते हैं ।
जलकांटा

4

npm update: नवीनतम नोड मॉड्यूल के साथ स्थापित और अद्यतन करें जो पैकेज में हैं

npm install: नोड मॉड्यूल स्थापित करें जो पैकेज में परिभाषित किए गए हैं। संदेश (अपडेट के बिना)


एनपीएम संस्करण 6.9.0 का उपयोग करना मैं निम्नलिखित व्यवहार का पालन करता हूं: npm updateबड़ी संख्या में निर्भरता को छोड़ देगा package-lock.json। सभी आवश्यक पैकेज उपलब्ध हैं और package-lock.jsonसही होने के लिए, मुझे हमेशा npm installसही निष्पादन करना होगा npm update
मैनफ्रेड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.