Trường hợp npm cài đặt gói?


977

Ai đó có thể cho tôi biết nơi tôi có thể tìm thấy các mô-đun Node.js mà tôi đã cài đặt bằng cách sử dụng npmkhông?


3
trên linux mint it$HOME/.npm-global/lib/node_modules
Synxmax 16/8/2016

9
Chỉ cần để mọi người biết, lắp đặt mà không cần -glựa chọn sẽ cài đặt một module để bạn làm việc thư mục ví dụ như nếu bạn thực hiện một thư mục nói ~/Desktop/tmprồi cd ~/Desktop/tmpsau đó làm npm install appiumthì đừng lsbạn sẽ thấy node_modules package-lock.jsonvì bạn đã cài đặt một module nút appiumđể bạn working directory... siêu khó hiểu bởi vì -gvề cơ bản nên có các defaultnhưng không phải vậy.
the_prole

2
@the_prole - cảm ơn, điều đó cực kỳ hữu ích .
Fattie

Câu trả lời:


1142

Thư viện toàn cầu

Bạn có thể chạy npm list -gđể xem thư viện toàn cầu nào được cài đặt và vị trí của chúng. Sử dụng npm list -g | head -1cho đầu ra cắt ngắn chỉ hiển thị đường dẫn. Nếu bạn muốn chỉ hiển thị các gói chính chứ không phải các gói phụ cài đặt cùng với nó - bạn có thể sử dụng - npm list --depth=0sẽ hiển thị tất cả các gói và chỉ nhận các gói được cài đặt trên toàn cầu, chỉ cần thêm -g tức là npm list -g --depth=0.

Trên các hệ thống Unix chúng thường được đặt trong /usr/local/lib/nodehoặc /usr/local/lib/node_moduleskhi được cài đặt trên toàn cầu. Nếu bạn đặt NODE_PATHbiến môi trường cho đường dẫn này, các mô-đun có thể được tìm thấy theo nút.

Windows XP - %USERPROFILE%\AppData\npm\node_modules
Windows 7, 8 và 10 -%USERPROFILE%\AppData\Roaming\npm\node_modules

Thư viện phi toàn cầu

Các thư viện không toàn cầu được cài đặt node_modulesthư mục con trong thư mục bạn hiện đang ở.

Bạn có thể chạy npm listđể xem các thư viện không toàn cầu được cài đặt cho vị trí hiện tại của bạn.

Khi cài đặt tùy chọn -g để cài đặt trên toàn cầu

npm install -g pm2- pm2 sẽ được cài đặt trên toàn cầu. Sau đó, nó thường sẽ được tìm thấy trong /usr/local/lib/node_modules(Sử dụng npm root -gđể kiểm tra vị trí.)

npm install pm2- pm2 sẽ được cài đặt cục bộ. Sau đó nó thường sẽ được tìm thấy trong thư mục địa phương trong/node_modules


26
Nếu bạn đang sử dụng nvm, thì các mô-đun toàn cầu của bạn có thể ở một trong một số vị trí tùy thuộc vào phiên bản nút bạn đang sử dụng tại thời điểm đó. Cách tốt nhất là sử dụng npm list -gnhư được đề xuất trong câu trả lời khác.
không thể ghi

73
không làm việc cho tôi, chỉ hiển thị thư mục bin. "Npm root -g" không hoạt động.
whitneyland

7
trong Arch linux, các mô-đun toàn cầu nằm dưới / usr / lib. "npm --help" hiển thị vị trí chính xác là dòng cuối cùng của đầu ra, ví dụ: npm@3.6.0 / usr / lib / node_modules / npm
Gregor

20
cho các cửa sổ 10, được đặt trong%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami

11
"Npm root -g" là chính xác - danh sách có thể hoạt động nhưng có quá nhiều thông tin, trong khi lệnh khác chỉ cung cấp cho bạn vị trí chính xác mà bạn đang tìm kiếm. stackoverflow.com/a/24295332/174965
Adam Tolley

581

Lệnh npm rootsẽ cho bạn biết thư mục cài đặt hiệu quả của các gói npm của bạn.

Nếu thư mục làm việc hiện tại của bạn là gói nút hoặc thư mục con của gói nút, npm rootsẽ cho bạn biết thư mục cài đặt cục bộ. npm root -gsẽ hiển thị root cài đặt toàn cầu bất kể thư mục làm việc hiện tại.

Thí dụ:

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

Xem tài liệu.


1
+1 cho câu trả lời này (ít nhất là theo Linux Mint 17 Qianna và npm 3.9.5). node_modulesThư mục toàn cầu của tôi là trong /usr/local/lib/node_modules. Khi tôi làm tức là sudo npm uninstall browserify -g(giả sử tôi đã làm sudo npm install browserify -gtrước đó), nó sẽ xóa nó khỏi đó.
nik_m

10
Đây là một câu trả lời hữu ích hơn nhiều, vì đầu ra phù hợp để soạn các lệnh lớn hơn mà không cần trích xuất đường dẫn từ một loạt các đầu ra.
Adam Tolley

2
Root mặc định trên windows Hệ điều hành là C: \ Users \ Your_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang

2
Đối với MacOS Mojave 10.14.5 cũng vậy/usr/local/lib/node_modules
Jim Aho

89

Đối với các mô-đun được cài đặt trên toàn cầu:

Các câu trả lời khác cung cấp cho bạn các câu trả lời dành riêng cho nền tảng, nhưng một câu trả lời chung chung là:

Khi bạn cài đặt mô-đun toàn cầu với npm install -g something, npm sẽ tìm một biến cấu hình prefixđể biết nơi cài đặt mô-đun.

Bạn có thể nhận được giá trị đó bằng cách chạy npm config get prefix

Để hiển thị tất cả các mô-đun toàn cầu có sẵn trong thư mục đó, hãy sử dụng npm ls -g --depth 0( depth 0để không hiển thị các phụ thuộc của chúng).

Nếu bạn muốn thay đổi đường dẫn mô-đun toàn cầu, hãy sử dụng npm config editvà đặt prefix = /my/npm/global/modules/prefixvào tệp hoặc sử dụng npm config set prefix /my/npm/global/modules/prefix.

Khi bạn sử dụng một số công cụ như nút bấm , chúng sẽ thay đổi đường dẫn cài đặt mặc định nền tảng của các mô-đun npm toàn cầu.


2
Bạn đã trả lời câu hỏi tiếp theo của tôi: "Ai đó có thể cho tôi biết làm thế nào tôi có thể thay đổi vị trí của các mô-đun Node.js không?" Lưu ý: Lý do tại sao điều này quan trọng với tôi là vì vậy tôi đã không phải thay đổi PATH của mình một lần nữa. Tôi đã bỏ ghi chú đề xuất mặc định trong tệp npmrc mà {npm config get prefx} mở ra.
HeyZiko

"Khi bạn sử dụng một số công cụ như nút bấm, chúng sẽ thay đổi đường dẫn cài đặt mặc định nền tảng của các mô-đun npm toàn cầu." +1
Jim Aho

65

Trên cửa sổ tôi đã sử dụng npm list -gđể tìm ra nó. Theo mặc định, các gói (toàn cầu) của tôi đã được cài đặt C:\Users\[Username]\AppData\Roaming\npm.


9
Chỉ cần FYI - Đây là% appdata% \ npm của người dùng thực thi
Felix

19

Nếu bạn đang tìm kiếm tệp thực thi mà npm đã cài đặt, có thể vì bạn muốn đặt nó trong PATH của mình, bạn chỉ cần làm

npm bin

hoặc là

npm bin -g

Nếu bạn đã cài đặt các gói npm trên toàn cầu nơi nút được cài đặt với homebrew và sau đó npm được cập nhật với chính npm, bạn có thể gặp command not foundlỗi. Nếu vậy, hãy thêm aboveto PATH của bạn: export PATH=$PATH:$(npm bin -g)voila
jacob

18

Trong các phiên bản trước của các mô-đun NPM luôn được đặt trong / usr / local / lib / nút hoặc bất cứ nơi nào bạn đã chỉ định gốc npm trong tệp .npmrc. Tuy nhiên, trong các mô-đun NPM 1.0+ được cài đặt ở hai nơi. Bạn có thể cài đặt các mô-đun cục bộ vào ứng dụng của mình trong /.node_modules hoặc bạn có thể cài đặt chúng trên toàn cầu để sử dụng các ứng dụng trên.

Thông tin chi tiết có thể được tìm thấy tại https://github.com/isaacs/npm/blob/master/doc/install.md


4
Một cái gì đó cần lưu ý - với các mô-đun 1.0 được lưu trữ trong / usr / local / lib / node_modules.
Nick Campbell

@EricSmith liên kết của bạn cũng bị hỏng
nicolimo86

16

Không trả lời trực tiếp nhưng có thể giúp ....

Npm cũng có một thư mục bộ đệm, có thể được tìm thấy bằng cách chạy npm config get cache( %AppData%/npm-cachetrên Windows).

Các mô-đun npm được tải xuống đầu tiên tại đây và sau đó được sao chép vào thư mục npm toàn cầu ( %AppData%/Roaming/npmtrên Windows) hoặc thư mục cụ thể của dự án ( your-project/node_modules).

Vì vậy, nếu bạn muốn theo dõi các gói npm và một số cách, danh sách tất cả các gói npm đã tải xuống (nếu bộ đệm npm không được làm sạch) hãy xem thư mục này. Cấu trúc thư mục là{cache}/{name}/{version}

Điều này cũng có thể giúp https://docs.npmjs.com/cli/cache


14

Nếu mô-đun được cài đặt với -gcờ toàn cầu ( ), bạn có thể nhận vị trí cha mẹ bằng cách chạy lệnh sau

npm get prefix

hoặc là

npm ls -g --depth=0

nơi sẽ in vị trí cùng với danh sách các mô-đun được cài đặt

Chúc mừng :-)


13

Cách dễ nhất là làm

danh sách npm -g

để liệt kê các gói và xem vị trí cài đặt của họ.

Tôi đã cài đặt npm qua chololatey, vì vậy vị trí là

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

C: \ MyProgramData \ là vị trí repo sô cô la.


12

Để có được một danh sách nhỏ gọn mà không cần phụ thuộc, chỉ cần sử dụng

npm list -g --depth 0

6

Bạn có thể tìm thấy các mô-đun được cài đặt trên toàn cầu bằng lệnh

npm list -g

Nó sẽ cung cấp cho bạn vị trí nơi các mô-đun node.js đã được cài đặt.

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

Nếu bạn cài đặt các mô-đun node.js cục bộ trong một thư mục, bạn có thể nhập lệnh sau để xem vị trí.

npm list

4

Từ các tài liệu :

Trong npm 1.0, có hai cách để cài đặt mọi thứ:

  • trên toàn cầu - Điều này thả các mô-đun vào {prefix}/lib/node_modulesvà đặt các tệp thực thi vào {prefix}/bin, nơi {prefix}thường là một cái gì đó giống như /usr/local. Nó cũng cài đặt các trang man {prefix}/share/man, nếu chúng được cung cấp.

  • cục bộ- Điều này cài đặt gói của bạn trong thư mục làm việc hiện tại. Các mô-đun nút đi vào ./node_modules, các tệp thực thi đi vào ./node_modules/.bin/và các trang man không được cài đặt.

Bạn có thể nhận được {prefix}với npm config get prefix. (Hữu ích khi bạn cài đặt nút với nvm).


3

Từ các tài liệu :

Các gói được thả vào thư mục node_modules dưới tiền tố. Khi cài đặt cục bộ, điều này có nghĩa là bạn có thể yêu cầu ("packagename") tải mô-đun chính của nó hoặc yêu cầu ("packagename / lib / path / to / sub / module") để tải các mô-đun khác.

Các bản cài đặt toàn cầu trên các hệ thống Unix chuyển đến {prefix} / lib / node_modules. Cài đặt toàn cầu trên Windows đi tới {tiền tố} / node_modules (nghĩa là không có thư mục lib.)

Các gói có phạm vi được cài đặt theo cùng một cách, ngoại trừ chúng được nhóm lại trong một thư mục con của thư mục node_modules có liên quan với tên của tiền tố phạm vi đó bằng ký hiệu @, ví dụ: npm install @ myorg / gói sẽ đặt gói trong {prefix} / node_modules / @ myorg / gói. Xem phạm vi để biết thêm chi tiết.

Nếu bạn muốn yêu cầu () một gói, sau đó cài đặt nó cục bộ.

Bạn có thể nhận được {prefix}với npm config get prefix. (Hữu ích khi bạn cài đặt nút với nvm).

Đọc về địa phương .
Đọc về toàn cầu .



3

Tôi bắt đầu phát điên khi tìm kiếm cấu hình thực, vì vậy đây là danh sách tất cả các tệp cấu hình trên linux:

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

trên windows: - c / Chương trình \ Files / nodejs / node_modules / npm / npmrc

Sau đó, trong tập tin tiền tố được cấu hình:

prefix=/usr

Tiền tố được mặc định là / usr trong linux, thành $ {APPDATA} \ npm trong windows

Các mô-đun nút nằm dưới cây tiền tố $ và đường dẫn phải chứa $ tiền tố / bin

Có thể có một vấn đề :

  • Khi bạn cài đặt trên toàn cầu, bạn sử dụng "sudo su" thì /root/.npmrccó thể được sử dụng!
  • Khi bạn sử dụng cục bộ mà không có sudo: cho người dùng của bạn thì /home/youruser/.npmrc.
  • Khi đường dẫn của bạn không đại diện cho tiền tố của bạn
  • Khi bạn sử dụng, npm set -g prefix /usrnó đặt / etc / npmrc toàn cầu, nhưng không ghi đè cục bộ

Dưới đây là tất cả các thông tin còn thiếu để tìm những gì được cấu hình ở đâu. Hy vọng tôi đã được đầy đủ.


2

Như các câu trả lời khác nói, cách tốt nhất là làm

npm list -g

Tuy nhiên, nếu bạn đã npmcài đặt một số lượng lớn các gói, đầu ra của lệnh này có thể rất dài và rất khó để cuộn lên (đôi khi thậm chí không thể cuộn xa như vậy).

Trong trường hợp này, đưa ra morechương trình, như thế này

npm list -g | more

2

Windows 10 : Khi tôi chạynpm prefix -g, tôi nhận thấy rằng vị trí cài đặt nằm bên trong đường dẫn của git shell mà tôi đã sử dụng để cài đặt. Ngay cả khi vị trí đó được thêm vào đường dẫn, lệnh từ gói được cài đặt toàn cầu sẽ không được nhận ra. Được sửa chữa bởi:

  1. đang chạy npm config edit
  2. thay đổi tiền tố thành 'C: \ Users \ username \ AppData \ Roaming \ npm'
  3. thêm đường dẫn đó vào biến đường dẫn hệ thống
  4. cài đặt lại gói với -g.

2

Mở rộng dựa trên các câu trả lời khác -

npm list -g

sẽ cho bạn thấy vị trí của các gói được cài đặt trên toàn cầu.

Nếu bạn muốn xuất danh sách đó thành một tệp mà sau đó bạn có thể dễ dàng tìm kiếm trong trình soạn thảo văn bản của mình:

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


1

Btw, npm sẽ tìm kiếm node_modules trong các thư mục mẹ (tối đa là root) nếu không thể tìm thấy trong local.


1

Nếu bạn đang cố gắng truy cập thư mục toàn cầu của mình từ mã, bạn có thể quay lại từ đó process.execPath. Ví dụ: để tìm wsproxy, trong đó {NODE_GLOBAL_DIR}/bin/wsproxy, bạn có thể chỉ cần:

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

Ngoài ra còn có cách npmhoạt động của cli @ ec9fcc1/lib/npm.js#L254 với:

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

Xem thêm ec9fcc1/lib/install.js#L521 :

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

Trường hợp globalPrefixcó một mặc định được đặt trong ec9fcc1/lib/config/defaults.js#L92-L105 của:

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)
    }
}

Làm thế nào điều này nên làm việc? Ví dụ, nhị phân Node đang ở /usr/bin/node, nhưng rõ ràng (vì đây là mô-đun) không có ở đó; thay vào đó họ đang ở /usr/lib/node_modules.
Florian Rappl

Được cập nhật với tham chiếu để npmthực hiện
AT

Bây giờ đây là một câu chuyện khác nhau; bạn mang vào nền tảng (tốt) và các biến env tương ứng (mặc dù không đề cập đến những chức năng quan trọng như moduleName đang làm gì, nhưng tôi đoán người đọc trung bình sẽ có thể suy ra). Cảm ơn đã sửa đổi / chỉnh sửa!
Florian Rappl

1

Nếu bạn đã cài đặt Visual Studio, bạn sẽ thấy nó đi kèm với bản sao của nút riêng biệt với nút nằm trên đường dẫn khi bạn tự cài đặt nút - Mine nằm trong C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Cộng đồng \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

Nếu bạn chạy lệnh npm từ bên trong thư mục này, bạn sẽ tìm ra mô-đun nút nào được cài đặt bên trong studio hình ảnh.


0

Windows 7, 8 và 10 -% USERPROFILE% \ AppData \ Roaming \ npm \ node_modules.

Lưu ý: Nếu bạn ở đâu đó trong loại thư mục cd ..cho đến khi bạn ở trong C:thư mục. Sau đó, gõ cd %USERPROFILE%\AppData\Roaming\npm\node_modules. Và, kỳ diệu %USERPROFILE%sẽ thay đổi thành Users\YourUserProfile\. Tôi chỉ muốn làm rõ về những ý tưởng được đề cập Deckotrong phản ứng đầu tiên. npm list -gsẽ liệt kê tất cả các bit bạn đã cài đặt trên toàn cầu. Nếu bạn cần tìm dự án của bạn liên quan npm packagethì cd 'your angular project xyz'hãy chạy npm list. Nó sẽ hiển thị danh sách các mô-đun trong npm package. Nó cũng sẽ cung cấp cho bạn danh sách dependenciesthiếu, và bạn có thể yêu cầu chạy dự án đó một cách hiệu quả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.