จะทราบได้อย่างไรว่ามีการติดตั้งแพคเกจ npm ทั่วโลกหรือในเครื่อง


154

ฉันกำลังติดตั้ง grunt, node, npm, bower และ grunt-cli บน windows7

คำแนะนำบอกว่าฉันควรรันคำสั่งติดตั้งด้วยแฟล็ก -g สำหรับโกลบอล

ฉันจะตรวจสอบได้อย่างไรว่าฉันใช้แฟล็ก -g เมื่อฉันติดตั้ง จะใช้เวลาในการถอนการติดตั้งและติดตั้งใหม่

คำตอบ:


220

ใช้listคำสั่งกับ-gแฟล็กเพื่อดูแพ็กเกจทั้งหมดที่ติดตั้งแบบโกลบอล:

npm list -g

ในการตรวจสอบว่ามีการติดตั้งแพ็คเกจเฉพาะทั่วโลกหรือไม่คุณสามารถระบุชื่อแพ็คเกจ ( gruntในกรณีนี้) ตามที่เห็นด้านล่าง:

npm list -g grunt

หรือคุณสามารถใช้grepเพื่อกรองชื่อแพ็คเกจ:

npm list -g | grep grunt

ที่มา: https://docs.npmjs.com/cli/ls


4
สำหรับบูลีน "ติดตั้งหรือไม่" --depthตรวจสอบให้ลองใช้ ตัวอย่างเช่นnpm list --depth 1 --global csats-mturk > /dev/null 2>&1. นี่เป็นตัวอย่างที่มีรายละเอียดมากขึ้น
Adam Monsen

2
@ AdamMonsen ฉันกำลังมองหาการติดตั้งระดับสูงของเทิน ฉันเคยnpm list --depth 0 --global ternตรวจสอบว่าเทินถูกติดตั้งทั่วโลกหรือไม่npm install -g tern
Sudhi

grepดูเหมือนว่าเป็นวิธีการแก้ปัญหาที่น่าเชื่อถืออย่างเป็นธรรมให้ความเห็นเกี่ยวกับการออกจาก NPM ด้วยข้อผิดพลาดเนื่องจากการพึ่งพาที่ไม่
คาดคิด

31
npm list --depth 1 --global packagename > /dev/null 2>&1

จากนั้นคุณสามารถตรวจสอบสถานะการออกเพื่อดูว่ามีการติดตั้งหรือไม่ ขอขอบคุณอดัม Monsen


3
ขอบคุณสำหรับ--depth 1! นั่นคือสิ่งที่ฉันกำลังมองหา อันที่จริงฉันกำลังใช้ตอนนี้npm list --depth 0 -g
รู้สึกถึง

ด้วยเหตุผลบางอย่าง$?ส่งกลับมา1ให้ฉันเสมอแม้ว่าจะติดตั้งแพ็คเกจหรือไม่ได้ติดตั้งก็ตาม
Katie

4
คำเตือน: npm จะออกจากโดยมีข้อผิดพลาดเสมอหากแพ็กเกจใด ๆ ของคุณมีการพึ่งพาที่ไม่แน่นอนแม้ว่าจะติดตั้งแพ็กเกจแล้วก็ตาม @ Kayvar นี่เป็นสาเหตุที่ npm คืนค่า 1 ให้คุณ
Codebling

17

ในการตรวจสอบว่ามีการติดตั้งแพ็กเกจเฉพาะที่เรียกใช้ทั่วโลกหรือไม่:

npm list -g [package-name]

ลองมา "grunt" เป็นตัวอย่าง หากติดตั้งทั่วโลกคุณควรเห็นสิ่งนี้

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── grunt@0.4.5

หากไม่ได้ติดตั้งไว้ทั่วโลกคุณควรเห็นสิ่งนี้

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── (empty)

ในการตรวจสอบว่ามีการติดตั้งแพ็กเกจเฉพาะไว้ในเครื่องหรือไม่คุณสามารถดำเนินการคำสั่งเดียวกับข้างต้น แต่ไม่มีพารามิเตอร์ -g

แหล่งที่มา: วิธีการตรวจสอบว่าแพคเกจ NPM ถูกติดตั้งทั่วโลกหรือท้องถิ่น


6

คุณสามารถแสดงรายการแพ็กเกจโกลบอลทั้งหมดได้ด้วยคำสั่ง:

npm ls -g

หรือตรวจสอบแพ็คเกจเฉพาะด้วย:

npm ls -g [package-name] 

ตัวอย่างเช่น: npm ls -g @angular/cli


1

ใน Windows เราใช้คำสั่งต่อไปนี้เพื่อค้นหาว่ามีการติดตั้งแพ็คเกจหรือไม่ โปรดดูภาพเพื่อดูรายละเอียด

npm list -g | find "create"

ผลตัวอย่าง


0

จากแพ็คเกจของคุณด้วย sindresorhus/is-installed-globally

https://github.com/sindresorhus/is-installed-globally

การใช้งาน:

const isInstalledGlobally = require('is-installed-globally');

// With `npm install your-package`
console.log(isInstalledGlobally);
//=> false

// With `npm install --global your-package`
console.log(isInstalledGlobally);
//=> true

ฉันพบว่ามีประโยชน์เมื่อฉันต้องแจกจ่ายไฟล์ที่สร้างไว้ล่วงหน้าด้วยแพ็คเกจของฉัน: จะเผยแพร่แพคเกจ npm พร้อมไฟล์แจกจ่ายอย่างไร กับแพคเกจนี้ผมสามารถตรวจสอบว่าการติดตั้งในท้องถิ่นหรือระดับโลกและจากนั้นใช้เส้นทางญาติสำหรับการติดตั้งในท้องถิ่นตามที่แสดงไว้ที่นี่

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