แพคเกจติดตั้ง npm อยู่ที่ไหน


977

มีคนบอกฉันว่าฉันสามารถหาโมดูล Node.js ที่ฉันติดตั้งโดยใช้npmที่ไหน


3
บน linux mint it$HOME/.npm-global/lib/node_modules
Synxmax

9
เพียงเพื่อให้ทุกคนรู้ว่าการติดตั้งโดยไม่ได้-gตัวเลือกที่จะติดตั้งโมดูลเพื่อคุณทำงานเช่นไดเรกทอรีถ้าคุณทำไดเรกทอรีพูด~/Desktop/tmpแล้วcd ~/Desktop/tmpแล้วไม่npm install appiumแล้วlsคุณจะเห็นnode_modules package-lock.jsonเพราะคุณได้ติดตั้งโมดูลโหนดappiumที่คุณworking directory... สุดสับสนเพราะ-gเป็นหลักที่ควรจะเป็นdefaultแต่ไม่ได้เป็น
the_prole

2
@the_prole - ขอบคุณที่เป็นประโยชน์อย่างเหลือเชื่อ
Fattie

คำตอบ:


1142

ห้องสมุดทั่วโลก

คุณสามารถเรียกใช้npm list -gเพื่อดูไลบรารีทั่วโลกที่ติดตั้งและที่พวกเขาอยู่ ใช้npm list -g | head -1สำหรับเอาต์พุตที่ถูกตัดทอนซึ่งแสดงเฉพาะพา ธ หากคุณต้องการแสดงเฉพาะแพ็คเกจหลักไม่ใช่แพ็คเกจย่อยที่ติดตั้งพร้อมกับ - คุณสามารถใช้ - npm list --depth=0ซึ่งจะแสดงแพ็คเกจทั้งหมดและสำหรับแพ็คเกจแพ็คเกจที่ติดตั้งทั่วโลกเพียงเพิ่ม -g ienpm list -g --depth=0คือ

บนระบบ Unix โดยปกติแล้วพวกเขาจะอยู่ใน/usr/local/lib/nodeหรือ/usr/local/lib/node_modulesเมื่อติดตั้งทั่วโลก หากคุณตั้งค่าNODE_PATHตัวแปรสภาพแวดล้อมเป็นพา ธ นี้โมดูลสามารถพบได้โดยโหนด

Windows XP - %USERPROFILE%\AppData\npm\node_modules
Windows 7, 8 และ 10 -%USERPROFILE%\AppData\Roaming\npm\node_modules

ห้องสมุดที่ไม่ใช่สากล

ไลบรารีที่ไม่ใช่โกลบอลถูกติดตั้งnode_modulesโฟลเดอร์ย่อยในโฟลเดอร์ที่คุณอยู่ในปัจจุบัน

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

เมื่อติดตั้งใช้ตัวเลือก -g เพื่อติดตั้งทั่วโลก

npm install -g pm2- pm2 จะถูกติดตั้งทั่วโลก โดยทั่วไปแล้วจะพบได้ใน/usr/local/lib/node_modules(ใช้npm root -gเพื่อตรวจสอบตำแหน่ง)

npm install pm2- pm2 จะถูกติดตั้งในเครื่อง โดยทั่วไปแล้วจะพบได้ในไดเรกทอรีท้องถิ่นใน/node_modules


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

73
ไม่ทำงานสำหรับฉันแสดงเฉพาะโฟลเดอร์ถังขยะ "npm root -g" ทำงานได้
whitneyland

7
ภายใต้ Arch linux โมดูลโกลบอลจะอยู่ภายใต้ / usr / lib "npm --help" แสดงตำแหน่งที่แน่นอนเป็นบรรทัดสุดท้ายของเอาต์พุตเช่น: npm@3.6.0 / usr / lib / node_modules / npm
Gregor

20
สำหรับ windows 10 วางใน%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami

11
"npm root -g" ถูกต้อง - รายการอาจทำงานได้ แต่มีข้อมูลมากเกินไปโดยที่คำสั่งอื่นให้ตำแหน่งที่แน่นอนที่คุณต้องการ stackoverflow.com/a/24295332/174965
Adam Tolley

581

คำสั่งnpm rootจะบอกไดเรกทอรีการติดตั้งที่มีประสิทธิภาพของแพ็คเกจ npm ของคุณ

หากไดเร็กทอรีการทำงานปัจจุบันของคุณคือแพ็คเกจแพ็กเกจหรือไดเร็กทอรีย่อยของแพ็กเกจโหนดnpm rootจะบอกไดเร็กทอรีการติดตั้งโลคัล npm root -gจะแสดงรูทการติดตั้งทั่วโลกโดยไม่คำนึงถึงไดเรกทอรีการทำงานปัจจุบัน

ตัวอย่าง:

$ npm root -g
/usr/local/lib/node_modules

ดูเอกสารประกอบ


1
+1 กับคำตอบนี้ (อย่างน้อยภายใต้ Linux Mint 17 Qianna และ npm 3.9.5) โลกของฉันโฟลเดอร์อยู่ในnode_modules /usr/local/lib/node_modulesเมื่อฉันทำคือsudo npm uninstall browserify -g(สมมติว่าฉันได้ทำsudo npm install browserify -gมาก่อน) มันจะลบออกจากที่นั่น
nik_m

10
นี่เป็นคำตอบที่มีประโยชน์มากกว่าเนื่องจากเอาต์พุตเหมาะสำหรับการเขียนคำสั่งที่มีขนาดใหญ่ขึ้นโดยไม่ต้องแยกพา ธ จากเอาต์พุตจำนวนมาก
Adam Tolley

2
รูทเริ่มต้นบน windows OS คือ C: \ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang

2
สำหรับ MacOS Mojave 10.14.5/usr/local/lib/node_modules
Jim Aho

89

สำหรับโมดูลที่ติดตั้งทั่วโลก:

คำตอบอื่น ๆ ให้คำตอบเฉพาะแพลตฟอร์ม แต่คำตอบทั่วไปคือ:

เมื่อคุณติดตั้งโมดูลส่วนกลางด้วยnpm install -g somethingnpm จะค้นหาตัวแปรกำหนดค่าprefixเพื่อทราบตำแหน่งที่จะติดตั้งโมดูล

คุณสามารถรับค่านั้นได้ด้วยการวิ่ง npm config get prefix

ในการแสดงโมดูลทั้งหมดที่มีอยู่ในโฟลเดอร์นั้นให้ใช้npm ls -g --depth 0(depth 0เพื่อไม่แสดงการขึ้นต่อกัน)

หากคุณต้องการเปลี่ยนเส้นทางโมดูลส่วนกลางให้ใช้npm config editและใส่prefix = /my/npm/global/modules/prefixในไฟล์หรือใช้npm config set prefix /my/npm/global/modules/prefixในไฟล์หรือการใช้

เมื่อคุณใช้เครื่องมือบางอย่างเช่นnodistพวกเขาจะเปลี่ยนเส้นทางการติดตั้งเริ่มต้นแพลตฟอร์มของโมดูล Global npm


2
คุณตอบคำถามติดตามผลของฉัน: "มีคนบอกฉันได้ไหมว่าฉันจะเปลี่ยนตำแหน่งของโมดูล Node.js ได้อย่างไร" หมายเหตุ: เหตุผลที่สิ่งสำคัญสำหรับฉันคือเพื่อที่ฉันไม่ต้องเปลี่ยนเส้นทางของฉันอีกครั้ง ฉันยกเลิกข้อคิดเห็นคำแนะนำเริ่มต้นในไฟล์ npmrc ที่ {npm config get prefx} เปิดอยู่
HeyZiko

"เมื่อคุณใช้เครื่องมือบางอย่างเช่น nodist พวกเขาจะเปลี่ยนเส้นทางการติดตั้งเริ่มต้นแพลตฟอร์มของโมดูล Global npm" +1
Jim Aho

65

บน windows ฉันเคยnpm list -gพบมัน โดยค่าเริ่มต้นแพคเกจของฉัน (ทั่วโลก) C:\Users\[Username]\AppData\Roaming\npmได้ถูกติดตั้งให้


9
เพียงแค่ FYI - นี่คือการดำเนินการของผู้ใช้% appdata% \ npm
เฟลิกซ์

19

หากคุณกำลังมองหาไฟล์ปฏิบัติการที่ติดตั้งไว้ที่ npm อาจเป็นเพราะคุณต้องการที่จะติดตั้งไว้ใน PATH ของคุณคุณสามารถทำได้

npm bin

หรือ

npm bin -g

หากคุณติดตั้งแพคเกจ npm ทั่วโลกที่ติดตั้งโหนดด้วย homebrew และจากนั้นปรับปรุง npm ด้วย npm เองคุณอาจได้รับcommand not foundข้อผิดพลาด ถ้าเป็นเช่นนั้นเพิ่มข้างต้นไปยัง PATH ของคุณ: export PATH=$PATH:$(npm bin -g)voila
jacob

18

ในเวอร์ชันก่อนหน้าของโมดูล NPM จะถูกวางไว้ใน / usr / local / lib / node เสมอหรือที่ใดก็ตามที่คุณระบุรูต npm ภายในไฟล์. npmrc อย่างไรก็ตามในโมดูล NPM 1.0+ ได้รับการติดตั้งในสองแห่ง คุณสามารถมีโมดูลที่ติดตั้งไว้ในแอปพลิเคชันของคุณใน /.node_modules หรือคุณสามารถติดตั้งได้ทั่วโลกซึ่งจะใช้ข้างต้น

ข้อมูลเพิ่มเติมสามารถดูได้ที่https://github.com/isaacs/npm/blob/master/doc/install.md


4
สิ่งที่ควรทราบด้วยโมดูล 1.0 ถูกเก็บไว้ใน / usr / local / lib / node_modules
Nick Campbell

@EricSmith ลิงก์ของคุณก็หักเช่นกัน
nicolimo86

16

ไม่ใช่คำตอบโดยตรง แต่อาจช่วยได้ ....

npm ยังมีโฟลเดอร์แคชซึ่งสามารถพบได้โดยเรียกใช้npm config get cache(%AppData%/npm-cacheบน Windows)

โมดูล npm จะถูกดาวน์โหลดครั้งแรกที่นี่แล้วคัดลอกไปยังโฟลเดอร์โกลบอลของ npm ( %AppData%/Roaming/npmบน Windows) หรือโฟลเดอร์เฉพาะโครงการ (your-project/node_modules )

ดังนั้นหากคุณต้องการติดตามแพ็กเกจ npm และบางวิธีรายการแพ็กเกจ npm ที่ดาวน์โหลดทั้งหมด (หากไม่ได้ล้างแคช npm) ให้ดูที่โฟลเดอร์นี้ โครงสร้างโฟลเดอร์เป็นแบบ{cache}/{name}/{version}

สิ่งนี้อาจช่วยได้เช่นกัน https://docs.npmjs.com/cli/cache


14

หากโมดูลถูกติดตั้งด้วย-gค่าสถานะglobal ( ) คุณสามารถรับตำแหน่งพาเรนต์ได้โดยการเรียกใช้คำสั่งต่อไปนี้

npm get prefix

หรือ

npm ls -g --depth=0

ซึ่งจะพิมพ์ตำแหน่งพร้อมกับรายการของโมดูลที่ติดตั้ง

ไชโย :-)


13

วิธีที่ง่ายที่สุดคือการทำ

รายการ npm -g

เพื่อแสดงรายการแพ็คเกจและดูตำแหน่งที่ติดตั้ง

ฉันติดตั้ง npm ผ่าน chololatey ดังนั้นที่ตั้งคือ

C: \ MyProgramData \ chocolatey \ lib \ nodejs.commandline.0.10.31 \ Tools \ node_modules

C: \ MyProgramData \ เป็นตำแหน่ง repo ช็อกโกแลต



6

คุณสามารถค้นหาโมดูลที่ติดตั้งไว้ทั่วโลกโดยคำสั่ง

npm list -g

ซึ่งจะจัดเตรียมตำแหน่งที่ติดตั้งโมดูล node.js ให้คุณ

C:\Users\[Username]\AppData\Roaming\npm

หากคุณติดตั้งโมดูล node.js แบบโลคัลในโฟลเดอร์คุณสามารถพิมพ์คำสั่งต่อไปนี้เพื่อดูตำแหน่ง

npm list

4

จากเอกสาร :

ใน npm 1.0 มีสองวิธีในการติดตั้งสิ่งต่าง ๆ :

  • ทั่วโลก - นี้ลดลงในโมดูล{prefix}/lib/node_modulesและทำให้ไฟล์ปฏิบัติการใน{prefix}/binที่มักจะเป็นสิ่งที่ต้องการ{prefix} /usr/localนอกจากนี้ยังติดตั้ง man pages ใน {prefix}/share/manหากมีการจัดหาให้

  • ภายใน —- สิ่งนี้จะติดตั้งแพคเกจของคุณในไดเรกทอรีการทำงานปัจจุบัน โมดูลโหนดเข้าสู่การทำงาน./node_modules, ไปข้าง ./node_modules/.bin/หน้าและหน้าคนไม่ได้ติดตั้งเลย

คุณจะได้รับของคุณด้วย{prefix} npm config get prefix(มีประโยชน์เมื่อคุณติดตั้งโหนดด้วย nvm)


3

จากเอกสาร :

แพ็กเกจถูกดร็อปลงในโฟลเดอร์ node_modules ภายใต้ส่วนนำหน้า เมื่อติดตั้งแบบโลคัลหมายความว่าคุณสามารถต้องการ ("packagename") เพื่อโหลดโมดูลหลักหรือต้องการ ("packagename / lib / path / to / sub / module") เพื่อโหลดโมดูลอื่น ๆ

การติดตั้งแบบโกลบอลบนระบบ Unix ไปที่ {prefix} / lib / node_modules การติดตั้งแบบโกลบอลบน Windows ไปที่ {prefix} / node_modules (นั่นคือไม่มีโฟลเดอร์ lib)

แพ็คเกจที่ถูกกำหนดขอบเขตจะถูกติดตั้งในลักษณะเดียวกันยกเว้นจะถูกจัดกลุ่มเข้าด้วยกันในโฟลเดอร์ย่อยของโฟลเดอร์ node_modules ที่เกี่ยวข้องพร้อมชื่อของส่วนนำหน้าขอบเขตนั้นโดยสัญลักษณ์ @ เช่น npm install @ myorg / แพ็คเกจจะวางแพคเกจใน {prefix} / node_modules / @ myorg / แพ็กเกจ ดูขอบเขตสำหรับรายละเอียดเพิ่มเติม

หากคุณต้องการ () แพคเกจให้ติดตั้งในเครื่อง

คุณสามารถรับของคุณ{prefix}ด้วยnpm config get prefixด้วย(มีประโยชน์เมื่อคุณติดตั้งโหนดด้วย nvm)

อ่านข้อมูลเกี่ยวกับท้องถิ่น
อ่านข้อมูลเกี่ยวกับทั่วโลก



3

ฉันเริ่มจะคลั่งไคล้การค้นหาการกำหนดค่าจริงดังนั้นนี่คือรายการไฟล์การกำหนดค่าทั้งหมดบน linux:

  • / etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

บน windows: - c / Program \ Files / nodejs / node_modules / npm / npmrc

จากนั้นในไฟล์คำนำหน้าจะถูกกำหนดค่า:

prefix=/usr

คำนำหน้าถูกตั้งค่าเริ่มต้นเป็น / usr ใน linux เป็น $ {APPDATA} \ npm ใน windows

โมดูลโหนดอยู่ภายใต้ทรี $ prefix และพา ธ ควรมี $ prefix / bin

อาจมีปัญหา:

  • เมื่อคุณติดตั้งทั่วโลกคุณใช้ "sudo su" จากนั้น/root/.npmrcอาจใช้!
  • เมื่อคุณใช้ภายในเครื่องโดยไม่มี sudo: สำหรับผู้ใช้ของ/home/youruser/.npmrcคุณ
  • เมื่อเส้นทางของคุณไม่ได้เป็นตัวแทนคำนำหน้าของคุณ
  • เมื่อคุณใช้npm set -g prefix /usrมันจะตั้งค่า / etc / npmrc global แต่ไม่ได้แทนที่โลคัล

นี่คือข้อมูลทั้งหมดที่หายไปเพื่อค้นหาสิ่งที่กำหนดไว้ที่ใด หวังว่าฉันหมดแรงแล้ว


2

ในขณะที่คำตอบอื่น ๆ บอกว่าวิธีที่ดีที่สุดคือทำ

npm list -g

อย่างไรก็ตามหากคุณมีจำนวนมาก npmติดตั้งแพ็กเกจเอาท์พุทของคำสั่งนี้อาจยาวมากและปวดมากในการเลื่อนขึ้น

ในกรณีนี้ไพพ์ออกไปยังmoreโปรแกรมเช่นนี้

npm list -g | more

2

Windows 10 : เมื่อฉันวิ่งnpm prefix -gฉันสังเกตเห็นว่าตำแหน่งการติดตั้งอยู่ในเส้นทางของเชลล์ git ที่ฉันใช้ในการติดตั้ง แม้ว่าจะเพิ่มตำแหน่งนั้นลงในพา ธ คำสั่งจากแพ็กเกจที่ติดตั้งแบบโกลบอลจะไม่ถูกจดจำ แก้ไขโดย:

  1. วิ่ง npm config edit
  2. เปลี่ยนคำนำหน้าเป็น 'C: \ Users \ ชื่อผู้ใช้ \ AppData \ Roaming \ npm'
  3. การเพิ่มเส้นทางนั้นไปยังตัวแปรเส้นทางของระบบ
  4. ติดตั้งแพ็กเกจใหม่ด้วย -g

2

ขยายตัวตามคำตอบอื่น ๆ -

npm list -g

จะแสดงตำแหน่งของแพ็คเกจที่ติดตั้งทั่วโลก

หากคุณต้องการส่งออกรายการนั้นไปยังไฟล์ที่คุณสามารถค้นหาได้อย่างง่ายดายในโปรแกรมแก้ไขข้อความ:

npm list -g > ~/Desktop/npmfiles.txt



1

ถ้าคุณกำลังพยายามที่จะเข้าถึง dir process.execPathทั่วโลกของคุณจากรหัสที่คุณสามารถเปลี่ยนใจจาก ตัวอย่างเช่นหากต้องการค้นหาwsproxyซึ่งอยู่ภายใน{NODE_GLOBAL_DIR}/bin/wsproxyคุณสามารถทำได้เพียง:

path.join(path.dirname(process.execPath), 'wsproxy')

นอกจากนี้ยังมีวิธีการnpmทำงานของ cli @ ec9fcc1/lib/npm.js#L254ด้วย:

path.resolve(process.execPath, '..', '..')

ดูเพิ่มเติมec9fcc1/lib/install.js#L521 :

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

โดยที่globalPrefixมีการตั้งค่าเริ่มต้นในec9fcc1/lib/config/defaults.js#L92-L105จาก:

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir only is respected on Unix
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}

งานนี้ควรทำยังไง? ตัวอย่างเช่น Node binary อยู่ที่/usr/bin/nodeแต่เห็นได้ชัดว่า (เนื่องจากนี่คือ bin) โมดูลไม่ได้มี; /usr/lib/node_modulesแทนพวกเขาอยู่ที่
Florian Rappl

อัปเดตโดยอ้างอิงกับnpmการใช้งาน
AT

ตอนนี้เป็นเรื่องที่แตกต่าง; คุณนำแพลตฟอร์ม (ดี) และตัวแปร env ตามลำดับ (แม้ว่าจะไม่ได้กล่าวถึงฟังก์ชั่นที่สำคัญเช่น moduleName กำลังทำอะไร แต่ฉันเดาว่าผู้อ่านโดยเฉลี่ยจะสามารถอนุมานได้) ขอบคุณสำหรับการแก้ไข / แก้ไข!
Florian Rappl

1

หากคุณติดตั้ง Visual Studio คุณจะพบว่ามันมาพร้อมกับสำเนาของโหนดแยกต่างหากจากที่อยู่บนเส้นทางเมื่อคุณติดตั้งโหนดด้วยตนเอง - ของฉันอยู่ใน C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ ชุมชน \ MSBuild \ Microsoft \ VisualStudio \ NodeJs

หากคุณรันคำสั่ง npm จากภายในไดเร็กทอรีนี้คุณจะพบว่าโมดูลโหนดใดที่ติดตั้งอยู่ภายใน visual studio


0

Windows 7, 8 และ 10 -% USERPROFILE% \ AppData \ Roaming \ npm \ node_modules

หมายเหตุ: หากคุณอยู่ในประเภทโฟลเดอร์cd ..จนกว่าคุณจะอยู่ในC:ไดเรกทอรี cd %USERPROFILE%\AppData\Roaming\npm\node_modulesจากนั้นให้พิมพ์ และน่าอัศจรรย์จะเปลี่ยนเป็น%USERPROFILE% Users\YourUserProfile\ฉันแค่ต้องการชี้แจงเกี่ยวกับแนวคิดที่อ้างถึงDeckoในการตอบกลับครั้งแรก npm list -gจะแสดงรายการบิตทั้งหมดที่คุณติดตั้งไว้ทั่วโลก หากคุณต้องการที่จะหาโครงการของคุณที่เกี่ยวข้องnpm packageแล้วแล้วเรียกใช้cd 'your angular project xyz' มันจะแสดงรายชื่อของโมดูลในnpm list npm packageนอกจากนี้ยังจะให้รายการที่dependenciesขาดหายไปและคุณอาจต้องดำเนินการโครงการอย่างมีประสิทธิภาพ

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