javascript - मैं नवीनतम संस्करण में package.json में प्रत्येक निर्भरता को कैसे अपडेट करूं?
node.js npm (19)
मैंने पैकेज.जेसन को किसी अन्य प्रोजेक्ट से कॉपी किया है और अब सभी निर्भरताओं को अपने नवीनतम संस्करणों में टक्कर देना चाहते हैं क्योंकि यह एक ताजा प्रोजेक्ट है और अगर यह टूट जाता है तो मुझे कुछ ठीक करने में कोई फर्क नहीं पड़ता।
ऐसा करने का सबसे आसान तरीका क्या है?
अब मुझे पता है कि सबसे अच्छा तरीका npm info express version
चलाने के लिए है, तो प्रत्येक के लिए मैन्युअल रूप से package.json अद्यतन करें। इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। '
{
"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"
}
}
अब मैं npm-check-updates पर एक सहयोगी हूं, जो इस समस्या का एक बड़ा समाधान है।
TLDR; (नए एनपीएम संस्करणों के लिए अद्यतन)
चीजें थोड़ी-थोड़ी बदल गई हैं क्योंकि इन उत्तरों को मूल रूप से लिखा गया था।
एनपीएम 2+: npm outdated
+ npm update
+ npm shrinkwrap
पुराना एनपीएम: npm-check-updates
पैकेज + npm shrinkwrap
अपने deps को कम करने के लिए सुनिश्चित हो, या आप एक मृत परियोजना के साथ हवा हो सकता है। मैंने दूसरे दिन एक परियोजना खींचा और यह नहीं चलेगा क्योंकि मेरे डीपी सभी पुराने / अपडेट / गड़बड़ से बाहर थे। अगर मैं सिकुड़ गया होता, तो एनपीएम बिल्कुल वही स्थापित होता जो मुझे चाहिए था।
विवरण
उत्सुकता के लिए जो इसे अब तक बनाते हैं, वही है जो मैं अनुशंसा करता हूं:
नवीनतम संस्करणों का सुझाव देने के लिए 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 -rf node_modules
$ npm install
अंत में, npm-shrinkwrap.json
साथ सटीक संस्करणों को npm-shrinkwrap.json
सहेजें
$ rm npm-shrinkwrap.json
$ npm shrinkwrap
अब, npm install
अब npm-shrinkwrap.json
में सटीक संस्करणों का उपयोग करेगा
यदि आप npm-shrinkwrap.json
जांच करते हैं, तो सभी इंस्टॉल सटीक समान संस्करणों का उपयोग करेंगे।
यह उत्पादन के लिए विकास (सभी अपडेट, हर समय) संक्रमण से बाहर निकलने का एक तरीका है (कोई भी स्पर्श नहीं करता)।
- अस्थिर समेत नवीनतम रिलीज के लिए संस्करण के रूप में
*
उपयोग करें - नवीनतम स्थिर संस्करण के लिए संस्करण परिभाषा के रूप में
latest
उपयोग करें - नवीनतम
LatestStablePackages
का उपयोग कर नवीनतम नवीनतम संस्करण संख्या के साथ package.json को संशोधित करें
यहाँ एक उदाहरण है:
"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"
},
अद्यतनों की जांच के लिए एनसीयू एक नया उपनाम है। ऐसा करके आपको पैकेज में अपने संस्करण संख्याओं को मैन्युअल रूप से अपडेट करने की आवश्यकता नहीं है। Json ncu यह आपके लिए करता है। यदि आप लिनक्स मशीन पर हैं तो नीचे दी गई विधि का पालन करें
sudo npm i -g npm-check-updates // decide between -u or -a ncu -u, --upgrade and overwrite package file ncu -a, --upgradeAll include even those dependencies whose latest version satisfies the declared server dependency sudo npm install
अर्थात् संस्करण संख्याओं से मेल खाने के लिए यहां एक मूल रेगेक्स है ताकि आप उन्हें सभी को तारों से तुरंत बदल सकें।
अर्थपूर्ण संस्करण Regex
([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
कैसे इस्तेमाल करे
JSON फ़ाइल में उस पैकेज संस्करण का चयन करें जिसे आप प्रतिस्थापित करना चाहते हैं।
ऊपर regex इनपुट और सत्यापित करें कि यह सही पाठ से मेल खाता है।
तारों के साथ सभी मैचों को बदलें।
npm update --save
चलाएं - npm update --save
उपरोक्त सर्वोत्तम उत्तर के साथ मुझे मिली एकमात्र चेतावनी यह है कि यह नवीनतम संस्करण में मॉड्यूल अपडेट करता है। इसका मतलब यह एक अस्थिर अल्फा निर्माण के लिए अद्यतन कर सकता है।
मैं उस एनपीएम-चेक-अपडेट यूटिलिटी का उपयोग करूंगा। मेरे समूह ने इस टूल का उपयोग किया और यह स्थिर अपडेट इंस्टॉल करके प्रभावी ढंग से काम किया।
जैसा कि एटियेन ने ऊपर बताया है: स्थापित करें और इसके साथ चलाएं:
$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install
एक आसान कदम:
$ npm install -g npm-check-updates && ncu -a && npm i
ग्रीनकीपर यदि आप गिथब का उपयोग कर रहे हैं। https://greenkeeper.io/
यह एक गितुब एकीकरण है और चीजों को सेट करने के लिए अविश्वसनीय रूप से आसान है। स्थापित होने पर, यह स्वचालित रूप से आपके द्वारा निर्दिष्ट रिपॉजिटरीज़ में पुल अनुरोध बनाता है (या यदि सभी चाहते थे) और आपके कोड को हमेशा अद्यतित रखता है, बिना किसी मैन्युअल रूप से कुछ करने के लिए मजबूर किए। पीआर को तब सीआई सेवा पर निर्माण शुरू करना चाहिए और सफल या असफल चेक के आधार पर आप यह पता लगा सकते हैं कि समस्या को किस प्रकार ट्रिगर कर रहा है या जब सीआई पास बस पीआर को विलय कर लेता है।
नीचे, आप देख सकते हैं कि पहला निर्माण पहले और एक प्रतिबद्धता के बाद विफल हुआ ("नोड v6.9 में अपग्रेड करें") परीक्षण पास हो गए ताकि मैं अंत में पीआर को विलय कर सकूं। बहुत सारे इमोजी के साथ आता है।
एक और विकल्प https://dependencyci.com/ होगा, हालांकि मैंने इसे गहन रूप से परीक्षण नहीं किया था। पहली बार देखने के बाद ग्रीनकीपर सामान्य आईएमओ में बेहतर दिखता है और बेहतर एकीकरण होता है।
निम्नलिखित कोड (जिसे स्वीकार किया गया था) ने मुझे कुछ लिखा "यह बहुत लंबा ब्लहा-ब्लाह लेता है" और कुछ भी नहीं किया। शायद वैश्विक ध्वज का उपयोग समस्या, 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
पार्स करता है और आपके पैकेज को अपग्रेड करता है। मुझे लगता है कि यह इस तरह से बेहतर है, क्योंकि अगर आपको कुछ विशेष की ज़रूरत है, तो आप अपनी सूची संपादित कर सकते हैं, उदाहरण के लिए lib के वर्तमान संस्करण को रखना।
बहुत देर से जवाब लेकिन किसी की मदद कर सकते हैं।
यह सुविधा npm v5
में पेश की गई है। npm install -g [email protected]
और एनपीएम का उपयोग करके npm install -g [email protected]
को अपडेट करें
package.json
अद्यतन करने के लिए
हटाएं
/node_modules
औरpackage-lock.json (if you have any)
npm update
चलाएं। यह स्थापित निर्भरताओं के साथ नवीनतम संस्करण में package.json अद्यतन करेगा।
बहुत नवीनतम संस्करण में अद्यतन करने के लिए। आप npm-check-updates
साथ जा सकते हैं
मुझे वास्तव में पसंद है कि npm-upgrade कैसे काम करता है। यह एक साधारण कमांड लाइन उपयोगिता है जो आपकी सभी निर्भरताओं के माध्यम से जाती है और आपको नवीनतम संस्करण की तुलना में वर्तमान संस्करण देखने और यदि आप चाहें तो अपडेट कर सकते हैं।
अपनी परियोजना की जड़ में npm-upgade
चलाने के बाद क्या होता है इसका एक स्क्रीनशॉट यहां दिया गया है:
प्रत्येक निर्भरता के लिए आप अपग्रेड करना, अनदेखा करना, चेंजलॉग देखना या प्रक्रिया समाप्त करना चुन सकते हैं। यह अब तक मेरे लिए बहुत अच्छा काम करता है।
मैं इसे संग्रहीत करने के लिए 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
यदि आप विजुअल स्टूडियो कोड का उपयोग अपने आईडीई के रूप में करते हैं, तो यह एक क्लिक प्रक्रिया को package.json
अपडेट करने के लिए एक मजेदार छोटा विस्तार है।
संस्करण लेंस
यदि आप एनपीएम 5 और नोड 8 का उपयोग करते हैं तो निम्न आदेश का प्रयास करें
एनपीएम अपडेट - बचाओ
यदि आप यार्न का उपयोग करते हैं, तो निम्न आदेश सभी संकुल को उनके नवीनतम संस्करण में अपडेट करता है:
yarn upgrade --latest
अपने docs :
upgrade --latest
कमांड अपग्रेड कमांड के समान पैकेज को अपग्रेड करता है, लेकिन package.json में निर्दिष्ट संस्करण रेंज को अनदेखा करता है। इसके बजाए, नवीनतम टैग द्वारा निर्दिष्ट संस्करण का उपयोग किया जाएगा (संभावित रूप से बड़े संस्करणों में संकुल को अपग्रेड करना)।
यह देखने के लिए कि कौन से पैकेज में नए संस्करण उपलब्ध हैं, फिर निम्न आदेश का उपयोग करें:
npm outdated
केवल एक निर्भरता को अद्यतन करने के लिए बस निम्न आदेश का उपयोग करें:
npm install [email protected] --save
उदाहरण के लिए:
मेरी package.json
फ़ाइल निर्भरता है:
"@progress/kendo-angular-dateinputs": "^1.3.1",
तो मुझे लिखना चाहिए:
npm install @progress/[email protected] --save
वैकल्पिक है
"dependencies":{
"foo" : ">=1.4.5"
}
हर बार जब आप एनपीएम अपडेट का उपयोग करते हैं, तो यह स्वचालित रूप से नवीनतम संस्करण में अपडेट हो जाता है। अधिक संस्करण वाक्यविन्यास के लिए, आप यहां देख सकते हैं: https://www.npmjs.org/doc/misc/semver.html
npm-check-updates
एक उपयोगिता है जो सभी निर्भरताओं के नवीनतम संस्करण के साथ स्वचालित रूप से package.json को समायोजित करती है
$ npm install -g npm-check-updates
$ ncu -u
$ npm install
package.json
में सभी निर्भरताओं को नवीनतम करने के लिए मैंने यही किया है:
npm install -g npm-check-updates
ncu -u --packageFile package.json
- एनपीएम पुराना
- एनपीएम अपडेट
आपको अपने ऐप के लिए नवीनतम वांछित संस्करणों को संगत करना चाहिए। लेकिन नवीनतम संस्करण नहीं।