คุณจะติดตั้งการอ้างอิงของแอพใหม่อีกครั้งโดยใช้ NPM ได้อย่างไร


384

มีวิธีง่ายๆในการติดตั้งแพ็กเกจทั้งหมดที่แอปของฉันขึ้นอยู่กับ (เช่นพวกเขาอยู่ในแอปของฉันโฟลเดอร์ node_modules)?


4
npm rebuildอาจช่วยแก้ไขปัญหาบางอย่างเกี่ยวกับการอ้างอิงในตัวเอง
Francisco Presencia

1
ในกรณีที่ช่วยผู้อื่น: หากคุณเพียงแค่พยายามติดตั้งหนึ่งแพคเกจใช้npm update <packageName>งานได้ดี
rinogo

คำตอบ:


617

วิธีที่ง่ายที่สุดที่ฉันสามารถดูเป็นลบโฟลเดอร์และดำเนินการnode_modulesnpm install


27
ตกลงกัน; สมมติว่าคุณได้สร้างpackage.jsonไฟล์สำหรับแอปของคุณ
JohnnyHK

8
ระวังว่าการรันnpm installหลังจากลบnode_modulesไดเรกทอรีสามารถทำให้เวอร์ชันการพึ่งพาที่แตกต่างกันที่กำหนดไว้package.jsonถูกดึงลงมา หากคุณต้องการการพึ่งพาเวอร์ชันที่เฉพาะเจาะจงมากสำหรับแอปของคุณให้ระวังและnpm shrinkwrapตรวจสอบหรือตรวจสอบในnode_modulesไดเรกทอรีของคุณเพื่อควบคุมแหล่งที่มา
smithclay

9
@smithclay ฉันได้กำหนดแพ็คเกจรุ่นที่ชัดเจนไว้ใน package.json ของแอพดังนั้นควรจะดีใช่ไหม?
trusktr

@vadim ฉันกำลังทำการทดสอบบางอย่างเกี่ยวกับพฤติกรรมของnpm installมันและจะติดตั้งการอ้างอิงและอัปเกรดแพ็คเกจเป็นเวอร์ชันล่าสุดตามที่อนุญาตโดย package.json ดังนั้นการลบnode_modulesโฟลเดอร์จึงไม่จำเป็นเว้นแต่ว่าคุณคิดว่าโฟลเดอร์นั้นเสียหาย มีเหตุผลที่คุณคิดว่าควรนำออกหรือไม่ อย่างไรก็ตามหากเจตนาคือการลบแพ็คเกจใด ๆ ที่ไม่เกี่ยวข้องกับภายนอกคุณสามารถดำเนินการnpm pruneแทนได้
himanshu

1
@himanshu คุณมีสิทธิ์npm installอัพเกรดโมดูลทั้งหมดเป็น package.json state แต่คำถามก็คือจะติดตั้งแพ็คเกจทั้งหมดได้อย่างไร ดังนั้นจึงอาจเสียหายหรืออาจต้องสร้างชิ้นส่วนไบนารี่ใหม่หลังจากอัพเกรดโหนด node.js
Vadim Baryshev

96

npm updateวิธีที่ถูกต้องคือการดำเนินการ มันเป็นคำสั่งที่ทรงพลังจริง ๆ มันอัพเดตแพ็คเกจที่ขาดหายไปและตรวจสอบว่าสามารถใช้แพ็คเกจรุ่นใหม่กว่าได้หรือไม่

อ่านคำแนะนำเกี่ยวกับ NPMเพื่อทำความเข้าใจว่าคุณสามารถทำอะไรได้บ้าง


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

2
หากไม่มีแพ็คเกจที่หายไปจะตรวจสอบว่าสามารถใช้แพ็คเกจรุ่นล่าสุดได้หรือไม่ (รวมถึงการขึ้นต่อกันของแพ็คเกจ) ที่ระบุใน package.json ดังนั้นในสาระสำคัญมันจะอัพเกรดแพ็คเกจถ้าเป็นไปได้ แต่จะไม่ติดตั้งใหม่ หากคุณต้องการที่จะใช้คำสั่งคุณสามารถดำเนินnpm uninstall <package_name>การถอนการติดตั้งแพคเกจที่เฉพาะเจาะจงหรือดำเนินการnpm uninstallเพื่อถอนการติดตั้งแพคเกจทั้งหมด
himanshu

1
ฉันพยายามทำnpm uninstallโดยไม่ระบุแพ็คเกจ แต่นั่นทำให้เกิดข้อผิดพลาด
trusktr

คุณมี package.json ในไดเรกทอรีโฟลเดอร์ที่คุณทำสิ่งนี้หรือไม่? หากคุณถอนการติดตั้งแพ็คเกจระดับโลกคุณจะต้องเพิ่ม -g
himanshu

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

62

ส่วนใหญ่ฉันใช้คำสั่งต่อไปนี้เพื่อให้สามารถติดตั้งโมดูลโหนดทั้งหมดได้สำเร็จ (ต้องแน่ใจว่าคุณอยู่ในโฟลเดอร์โปรเจ็กต์)

rm -rf node_modules && npm install

คุณสามารถเรียกใช้npm cache cleanหลังจากลบnode_modulesโฟลเดอร์เพื่อให้แน่ใจว่าไม่มีการอ้างอิงแคช


47

npmอัพเดตคำสั่ง CLI สำหรับinstallและเพิ่ม--forceแฟล็ก

npm install --force

--force(หรือ-f) อาร์กิวเมนต์จะบังคับให้npmดึงข้อมูลระยะไกลทรัพยากรแม้ว่าสำเนาที่มีอยู่บนดิสก์

ดู npm install


เยี่ยมมากทำงานด้วย 'git + github.com ... '!
Toni Bünter

12

คุณสามารถใช้โมดูลติดตั้งใหม่ที่พบใน npm

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

reinstall

ข้อแตกต่างเพียงอย่างเดียวกับการลบnode_modulesโฟลเดอร์ด้วยตนเองและการสร้างnpm installคือคำสั่งนี้ล้างแคชของ npm โดยอัตโนมัติ ดังนั้นคุณสามารถรับสามขั้นตอนในคำสั่งเดียว

upd: npx reinstallเป็นวิธีการรันคำสั่งนี้โดยไม่ต้องติดตั้งแพ็กเกจแบบโกลบอล (เฉพาะสำหรับ npm5 +)


1
@ g00glen00b ฉันได้แก้ไขเพื่อให้ตอนนี้มีข้อมูลที่เป็นประโยชน์โดยไม่มีไฮเปอร์ลิงก์
Rob

@ g00glen00b มันเยี่ยมมาก มันไม่ได้ทำให้สิ่งนี้เป็นตัวเลือกสำหรับการลบ โปรดดูโพสต์นี้ - โดยเฉพาะอย่างยิ่งที่อยู่คำตอบสั้น ๆ พร้อมกับลิงค์โดยมีข้อมูลที่เป็นประโยชน์ (เช่นชื่อของห้องสมุด) เมื่อการเชื่อมโยงหลายมิติถูกลบออก
Rob


1

สำหรับ Windows คุณสามารถใช้

(if exist node_modules rmdir node_modules /q /s) && npm install

ซึ่งลบnode_modulesไดเรกทอรีและดำเนินการnpm installแล้ว การลบก่อนติดตั้งทำให้มั่นใจได้ว่าแพคเกจทั้งหมดจะถูกติดตั้งใหม่


0

ทำตามขั้นตอนนี้เพื่อติดตั้งโมดูลโหนดอีกครั้งและอัพเดต

ทำงานได้แม้ว่าโฟลเดอร์ node_modules จะไม่มีอยู่ ตอนนี้รันคำสั่งต่อไปนี้พร้อมกัน คุณยังสามารถใช้ "การอัปเดต npm" แต่ฉันคิดว่านี่เป็นวิธีที่ต้องการ

npm outdated // not necessary to run this command, but this will show outdated dependencies

npm install -g npm-check-updates // to install the "ncu" package

ncu -u --packageFile=package.json // to update dependencies version in package.json...don't run this command if you don't need to update the version

npm install: will install dependencies in your package.json file.

หากคุณเห็นด้วยกับรุ่นของการอ้างอิงของคุณในไฟล์ package.json ของคุณไม่จำเป็นต้องทำตามขั้นตอนเหล่านั้นเพียงแค่เรียกใช้

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