จะติดตั้งแพคเกจ NPM รุ่นก่อนหน้าได้อย่างไร


915

ฉันใช้ nvm เพื่อดาวน์โหลดโหนด v0.4.10 และติดตั้ง npm เพื่อทำงานกับโหนดเวอร์ชันนั้น

ฉันพยายามติดตั้งแบบด่วนโดยใช้

npm install express -g

และฉันได้รับข้อผิดพลาดที่ชัดเจนต้องใช้โหนดรุ่น> = 0.5.0

นี่เป็นเรื่องแปลกเนื่องจากฉันกำลังทำตามคำแนะนำสำหรับโหนด + express + mongodb การสอนที่นี่ที่ใช้โหนด v0.4.10 ดังนั้นฉันสมมติว่า express เป็น / พร้อมใช้งานกับโหนด v0.4.10 หากสมมติฐานของฉันถูกต้องฉันจะบอก npm ให้ดึงข้อมูลเวอร์ชันที่จะทำงานกับการตั้งค่าของฉันได้อย่างไร


7
ทำไมคุณไม่เพิ่งอัพเดตเวอร์ชั่นโหนด ค่อนข้างแน่ใจว่าควรมีการเพิ่มเติมที่ดีกว่าพฤติกรรมที่แตกหักที่คุณจะพบ
FabrícioMatté

1
บางครั้งนั่นไม่ใช่ตัวเลือก หากเขาใช้ nvm เพื่อลดระดับอาจมีเหตุผลเช่นกลุ่มอื่นบางกลุ่มควบคุมเวอร์ชันโหนดปฏิบัติการที่เขาต้องใช้
fool4jesus

คำตอบ:


1582

หากคุณต้องติดตั้งแพ็คเกจที่เก่ากว่าให้ระบุมัน

npm install <package>@<version>

ตัวอย่างเช่น: npm install express@3.0.0

คุณยังสามารถเพิ่มการ--saveตั้งค่าสถานะลงในคำสั่งนั้นเพื่อเพิ่มการอ้างอิง package.json ของคุณหรือการตั้ง--save --save-exactค่าสถานะถ้าคุณต้องการรุ่นที่แน่นอนที่ระบุไว้ในการอ้างอิง package.json ของคุณ

installคำสั่งเป็นเอกสารที่นี่: https://docs.npmjs.com/cli/install

หากคุณไม่แน่ใจว่ามีแพ็คเกจรุ่นใดให้ใช้งานคุณสามารถใช้:

npm view <package> versions

และnpm viewสามารถใช้สำหรับการดูสิ่งอื่น ๆ เกี่ยวกับแพ็คเกจได้เช่นกัน https://docs.npmjs.com/cli/view


4
ฉันเชื่อว่านี่จะติดตั้งเวอร์ชันหลักที่ใกล้เคียงที่สุดดังนั้นจึงอาจไม่ใช่สิ่งที่คุณคาดหวังstackoverflow.com/a/22345808/1074400
Aakil Fernandes

2
@AakilFernandes หากคุณระบุรุ่นที่แน่นอนรุ่นที่แน่นอนจะถูกติดตั้ง หากคุณระบุช่วงเวอร์ชัน semantic คุณอาจได้คู่ที่ไม่ตรงกัน ไม่มีอะไรพิเศษเกี่ยวกับคำสั่งติดตั้งในแง่นั้น
Bret Copeland

6
npm view <package> versions -jsonเพื่อดูทุก ๆ เวอร์ชันเดียวหลีกเลี่ยงจุดไข่ปลาที่ส่วนท้ายของรายการที่มีหลายเวอร์ชัน
TheDarkIn1978

5
หากคุณใช้npm install express@3.0.0คุณจะไม่ได้รับรุ่นที่แน่นอน 3.0.0 คุณจะได้รับเวอร์ชัน 3.xx ล่าสุด npm install express@3.0.0 --save-exactที่จะได้รับรุ่นที่เฉพาะเจาะจงที่คุณต้องใช้ ดูโพสต์บล็อกนี้: 60devs.com/npm-install-specific-version.html
Patrick Hund

5
@PatrickHund ไม่มีnpm install express@3.0.0คุณจะได้รับว่าเวอร์ชัน 3.0.0 npm install express@^3.0.0จะให้คุณ 3.xx ล่าสุด--save-exactมีผลต่อวิธีการเขียนไปยัง packages.json ซึ่งฉันครอบคลุมในคำตอบของฉันแล้ว โปรดทราบว่า--save-exactจะต้องใช้ร่วมกับอย่างใดอย่างหนึ่ง--saveหรือ--save-dev- ไม่เพียงพอที่จะใช้ด้วยตัวเอง
Bret Copeland

93

มันค่อนข้างง่าย แค่เขียนสิ่งนี้เช่น:

npm install -g npm@4.6.1

หรือ:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

1
ขอบคุณสำหรับแท็กlatestและnextเวอร์ชัน!
Jimmy Adaro

@inaps คุณอาจเพิ่มหมายเหตุว่าการ-gตั้งค่าสถานะสำหรับแพคเกจที่คุณต้องการติดตั้งทั่วโลกเนื่องจากผู้ใช้จำนวนมากจะมาที่หน้านี้และเพียงคัดลอก / วาง เราทุกคนเคยเป็น "ผู้ชายคนนั้น"
Jacksonkr

73

ก่อนอื่นให้ลบเวอร์ชันเก่าจากนั้นเรียกใช้ตัวอักษรต่อไปนี้:

npm install express@3.X

และเพื่อความมั่นคงหรือล่าสุด

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

12
นั่นคือตัวอักษรXหรือสแตนอินสำหรับหมายเลขเวอร์ชันที่เป็นตัวเลขหรือไม่?
Keith Thompson

7
นั่นคือคำถาม / หรือคำถามไม่ใช่คำถามใช่ / ไม่ใช่ ฉันพยายามnpm install express@3.Xและดูเหมือนว่าจะทำงาน นั่นเป็นคุณสมบัติหรืออุบัติเหตุของวิธีnpmแยกวิเคราะห์หมายเลขรุ่นหรือไม่?
Keith Thompson

3
@ KeithThompson ใช่มันเป็น! เฮ้ล้อเล่น ... มันเป็นวิธีnpmแยกวิเคราะห์มันดู: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz

3
@gonz: Xดังนั้นจึงเป็นตัวอักษร
Keith Thompson

1
ฉันแค่อยากจะบอกว่าทำไมมันถึงได้ผลสำหรับคุณ ฉันไม่รู้ความตั้งใจดั้งเดิมของ Saurabh หรือสิ่งที่คุณพยายามทำ 3.X จะหมายถึง> = 3.0 และ <4.0
gonz

41

ในความคิดของฉันที่เป็นวิธีที่ง่ายที่สุดและเร็วที่สุด:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10


2

คุณสามารถอัพเดตแพ็กเกจ npm ของคุณโดยใช้คำสั่งนี้:

npm install <package_name>@<version_number>

ตัวอย่าง: npm install yargs@12.02


1

ฉันมีวิธีทั่วไปในการแก้ปัญหาประเภทนี้ซึ่งอาจเป็นประโยชน์เช่นกันโดยเฉพาะอย่างยิ่งเมื่อทำการโคลนที่เก็บเพื่อเรียกใช้งานในเครื่อง แต่ต้องมีการวิเคราะห์เพิ่มเติมอีกเล็กน้อย

ด้วยแพคเกจnpm-check-updatesฉันตรวจสอบรุ่นของแพคเกจ (ตามไฟล์ package.json) ที่ไม่ได้ประกาศในรุ่นล่าสุดที่มีอยู่ดังแสดงในรูป ( https://www.npmjs.com/package/npm-check - อัปเดต ):

ป้อนคำอธิบายรูปภาพที่นี่

ด้วยข้อมูลนี้เราสามารถตรวจสอบสถานะการอัปเดตของแพ็คเกจที่แตกต่างกันและทำการตัดสินใจว่าแพคเกจใดที่จะอัพเกรด / ลดระดับและแพคเกจใดที่ไม่สามารถทำได้

สมมติว่าเราตัดสินใจอัปเดตแพ็คเกจทั้งหมดตามที่แสดงรายการเราสามารถใช้ncu -uคำสั่งที่แก้ไขไฟล์ package.json ของคุณเท่านั้น รันnpm installเพื่ออัพเดตแพ็กเกจที่ติดตั้งและ package-lock.json

จากนั้นขึ้นอยู่กับข้อกำหนดของที่เก็บเราสามารถปรับแต่งสิ่งที่จำเป็นติดตั้งเวอร์ชันเฉพาะด้วย npm view <package> versionsและ npm install <package>@<version>


1

npm install -g npm@version

ที่คุณต้องการปรับลดรุ่น

npm install -g npm@3.10.10


แต่ถ้าฉันต้องการมัน localy? ฉันต้องใส่ - บันทึกหรือไม่
AlexNikonov

ใช่คุณมีเช่นกัน .. มันจะดาวน์โหลดแพ็คเกจภายในเครื่อง
Lakshay Sharma

@AlexNikonov ommit -g(สำหรับการติดตั้งทั่วโลกจากนั้นจะลงจอดใน dir โครงการปัจจุบันของคุณ/node_modules) และใช่--saveหรือ--save-devเพื่อรับรายการในpackage.json
Frank Nocke

0

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจ npm เวอร์ชันก่อนหน้า:

npm install packagename@version


-3

บน Ubuntu คุณสามารถลองใช้คำสั่งนี้

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

รุ่นเฉพาะ: sudo n 8.11.3 แทน sudo n เสถียร

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