วิธีอัพเกรดโหนดอย่างเหมาะสมโดยใช้ nvm


231

เป็นไปได้ไหมที่จะอัปเกรดnodeแทนการติดตั้งเวอร์ชันเสถียรล่าสุดด้วยตนเอง

ผมได้ติดตั้งNode.jsรุ่น5.0ด้วยแต่ตอนนี้ฉันต้องการที่จะปรับปรุงมันnvm 5.4ฉันกำลังพยายามหลีกเลี่ยงการติดตั้งแพ็กเกจโกลบอลใหม่ทั้งหมดของฉัน ( เช่นโดยการรันnpm install -g grunt-cli bower yo yoman-angular-generator blabla blablablabla... )

คำตอบ:


328

สิ่งนี้อาจใช้งานได้:

nvm install NEW_VERSION --reinstall-packages-from=OLD_VERSION

ตัวอย่างเช่น:

nvm install 6.7 --reinstall-packages-from=6.4

จากนั้นหากคุณต้องการคุณสามารถลบรุ่นก่อนหน้าของคุณด้วย:

nvm uninstall OLD_VERSION

ในกรณีของคุณ NEW_VERSION = 5.4 OLD_VERSION = 5.0

หรือลองใช้:

nvm install stable

1
ปริมาณโดยใช้nvm install stableลบแพ็กเกจทั้งหมดที่ติดตั้งรวมถึงโหนดที่ติดตั้งแทนที่จะอัปเดตหรือไม่
Syed

1
จริงๆแล้วมันใช้งานไม่ได้อีกต่อไป มีปัญหากับ npm: github.com/creationix/nvm/issues/811
jhuesos

5
โดยnvm ls-remoteคุณสามารถดูการเปิดตัวทั้งหมด
Daniel

7
สิ่งนี้ใช้ได้กับฉัน: nvm install node --reinstall-packages-from=$(nvm current). สิ่งนี้จะอัปเดต Node.js เป็นเวอร์ชันล่าสุดและติดตั้งแพคเกจทั่วโลกแบบ npm จากสิ่งที่เป็นรุ่นก่อนหน้า
cyfrost

หากคุณไม่ถอนการติดตั้งให้ใช้nvm deactivateแล้วลองอีกครั้ง
izilotti

185

คุณสามารถเรียกใช้คำสั่งอย่างใดอย่างหนึ่งต่อไปนี้:

รุ่นล่าสุด : รุ่น
nvm install node --reinstall-packages-from=node
เสถียร (LTS) :
nvm install lts/* --reinstall-packages-from=node

สิ่งนี้จะติดตั้งเวอร์ชันที่เหมาะสมและติดตั้งแพ็กเกจทั้งหมดใหม่จากเวอร์ชันโหนดที่ใช้อยู่ในปัจจุบัน สิ่งนี้จะช่วยคุณไม่ให้จัดการกับรุ่นที่ระบุด้วยตนเอง

แก้ไข - เพิ่มคำสั่งสำหรับการติดตั้งเวอร์ชัน LTS ตามความคิดเห็น @ m4js7er


20
หากคุณต้องการอัปเดตล่าสุดรุ่นที่มีเสถียรภาพ (LTS - แนะนำสำหรับผู้ใช้มากที่สุด) nvm install lts/* --reinstall-packages-from=nodeแล้วคุณควรใช้: nvm uninstall [old version]หลังจากที่คุณสามารถทำความสะอาดรุ่นของคุณด้วย nvm lsคุณสามารถแสดงรายการรุ่นที่ติดตั้งทั้งหมดที่มี
m4js7er

คิดก่อนทำ--reinstall-packages-from=nodeคุณสามารถใช้สภาพแวดล้อมทั่วโลกที่แตกต่างกันสำหรับรุ่น 6, 8 และ 10
สนับสนุน

1
ฉันผูกคำสั่งnvm install lts/* --reinstall-packages-from=nodeแต่ให้ข้อผิดพลาดกับVersion 'lts/*' not found - try 'nvm ls-remote' to browse available versions.ฉันว่าฉันใช้ NVM เวอร์ชั่น 0.30.1 บางที NVM ของฉันก็เก่าเกินไป ฉันสิ้นสุดด้วยตนเองแทนที่lts/*ด้วย10.15.2/*เพื่อให้มันทำงาน
Zhang

16

สองวิธีแก้ปัญหาง่าย ๆ :

หากต้องการติดตั้งโหนดเวอร์ชันล่าสุดและติดตั้งแพ็กเกจเวอร์ชันเก่าเพียงรันคำสั่งต่อไปนี้

nvm install node --reinstall-packages-from=node

หากต้องการติดตั้งltsโหนดเวอร์ชันล่าสุด(สนับสนุนระยะยาว) และติดตั้งแพ็กเกจเวอร์ชันเก่าเพียงแค่รันคำสั่งต่อไปนี้

nvm install --lts /* --reinstall-packages-from=node

นี่คือGIFเพื่อสนับสนุนคำตอบนี้ NVM


ไม่สามารถใช้งานได้ - ฉันเพิ่งได้รับIf --reinstall-packages-from is provided, it must point to an installed version of node.
wickywills

@wickywills "node: นี่เป็นการติดตั้งโหนดรุ่นล่าสุด" บางทีคุณอาจมีและ LTS หรือรุ่นที่ติดตั้งเฉพาะดังนั้นจึงnodeไม่ได้ชี้ไปที่เวอร์ชันล่าสุดที่ติดตั้ง หรือคุณจำเป็นต้องอัปเดต nvm
iBaff

10

หากคุณมี 4.2 และต้องการติดตั้ง 5.0.0 แล้ว

nvm install v5.0.0 --reinstall-packages-from=4.2

คำตอบของ gabrielperales นั้นถูกต้องยกเว้นว่าเขาพลาดเครื่องหมาย "=" ในตอนท้าย หากคุณไม่ได้ใส่เครื่องหมาย "=" แล้วเวอร์ชั่นโหนดใหม่จะถูกติดตั้ง แต่แพ็คเกจจะไม่ถูกติดตั้ง

แหล่งที่มา: sitepoint


2

Node.JS เพื่อติดตั้งเวอร์ชันใหม่

ขั้นตอนที่ 1: การติดตั้ง NVM

npm i -g nvm

ขั้นตอนที่ 2: การติดตั้ง NODE รุ่นใหม่ล่าสุด

nvm install *.*.*(NodeVersion)

ขั้นตอนที่ 3: รุ่นโหนดที่เลือก

nvm use *.*.*(NodeVersion)

เสร็จสิ้น


0

Bash alias สำหรับอัพเดตเวอร์ชันปัจจุบันที่แอ็คทีฟ:

alias nodeupdate='nvm install $(nvm current | sed -rn "s/v([[:digit:]]+).*/\1/p") --reinstall-packages-from=$(nvm current)'

ส่วนsed -rn "s/v([[:digit:]]+).*/\1/p"การส่งออกจากแปลงnvm currentเพื่อให้เฉพาะรุ่นที่สำคัญของโหนดจะถูกส่งกลับเช่น: ->v13.5.013

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.