Di mana npm menginstal paket?

977

Dapatkah seseorang memberi tahu saya di mana saya dapat menemukan modul Node.js, yang saya instal menggunakan npm?

trnc
sumber
3
di linux mint itu$HOME/.npm-global/lib/node_modules
Synxmax
9
Hanya sehingga setiap orang tahu, menginstal tanpa -gopsi akan menginstal sebuah modul untuk Anda bekerja direktori misalnya jika Anda membuat sebuah direktori mengatakan ~/Desktop/tmpkemudian cd ~/Desktop/tmpmaka jangan npm install appiummaka jangan lsAnda akan melihat node_modules package-lock.jsonkarena Anda telah menginstal modul simpul appiumuntuk Anda working directory... super membingungkan karena -gharus dasarnya menjadi yang defaulttapi tidak.
the_prole
2
@the_prole - terima kasih, itu sangat berguna .
Fattie

Jawaban:

1142

Perpustakaan global

Anda dapat menjalankan npm list -guntuk melihat perpustakaan global mana yang diinstal dan di mana mereka berada. Gunakan npm list -g | head -1untuk keluaran terpotong menunjukkan hanya jalan. Jika Anda hanya ingin menampilkan paket-paket utama dan bukan sub-paketnya yang menginstalnya - Anda dapat menggunakan - npm list --depth=0yang akan menampilkan semua paket dan hanya untuk mendapatkan paket-paket yang diinstal secara global, cukup tambahkan -g mis npm list -g --depth=0.

Pada sistem Unix, mereka biasanya ditempatkan di /usr/local/lib/nodeatau /usr/local/lib/node_modulesketika diinstal secara global. Jika Anda mengatur NODE_PATHvariabel lingkungan ke jalur ini, modul dapat ditemukan oleh node.

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

Perpustakaan non-global

Perpustakaan non-global menginstal node_modulessub folder di folder Anda saat ini.

Anda dapat berlari npm listuntuk melihat pustaka non-global yang diinstal untuk lokasi Anda saat ini.

Saat memasang gunakan opsi -g untuk menginstal secara global

npm install -g pm2- PM2 akan diinstal secara global. Maka biasanya akan ditemukan di /usr/local/lib/node_modules(Gunakan npm root -guntuk memeriksa di mana.)

npm install pm2- PM2 akan diinstal secara lokal. Maka biasanya akan ditemukan di direktori lokal di/node_modules

Decko
sumber
26
Jika Anda menggunakan nvm, maka modul global Anda mungkin berada di salah satu dari beberapa tempat tergantung pada versi simpul yang Anda gunakan saat itu. Cara terbaik adalah menggunakan npm list -gseperti yang disarankan dalam jawaban lain.
unscriptable
73
tidak berfungsi untuk saya, hanya menunjukkan folder bin. "npm root -g" tidak berfungsi.
whitneyland
7
di bawah Arch linux, modul global berada di bawah / usr / lib. "npm --help" menunjukkan lokasi yang tepat sebagai baris terakhir dari output, misalnya: [email protected] / usr / lib / node_modules / npm
Gregor
20
untuk windows 10, ditempatkan di%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami
11
"npm root -g" benar - daftar mungkin berfungsi tetapi terlalu banyak info, sedangkan perintah lain hanya memberi Anda lokasi yang tepat yang Anda cari. stackoverflow.com/a/24295332/174965
Adam Tolley
581

Perintah ini npm rootakan memberi tahu Anda direktori instalasi efektif paket-paket npm Anda.

Jika direktori kerja Anda saat ini adalah paket node atau sub-direktori dari paket node, npm rootakan memberi tahu Anda direktori instalasi lokal. npm root -gakan menampilkan root instalasi global terlepas dari direktori kerja saat ini.

Contoh:

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

Lihat dokumentasi.

Joe Hawkins
sumber
1
Memberi +1 pada jawaban ini (setidaknya di bawah Linux Mint 17 Qianna dan npm 3.9.5). node_modulesFolder global saya ada di /usr/local/lib/node_modules. Ketika saya melakukannya yaitu sudo npm uninstall browserify -g(dengan asumsi saya telah melakukan sudo npm install browserify -gsebelumnya) itu menghapusnya dari sana.
nik_m
10
Ini adalah jawaban yang jauh lebih berguna, karena outputnya cocok untuk membuat perintah yang lebih besar tanpa mengekstraksi jalur dari sekelompok output.
Adam Tolley
2
Root default pada windows OS adalah C: \ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang
2
Untuk MacOS Mojave 10.14.5 juga/usr/local/lib/node_modules
Jim Aho
89

Untuk modul yang dipasang secara global:

Jawaban lain memberi Anda respons khusus platform, tetapi yang umum adalah ini:

Ketika Anda menginstal modul global dengan npm install -g something, npm mencari variabel konfigurasi prefixuntuk mengetahui di mana akan menginstal modul.

Anda bisa mendapatkan nilai itu dengan menjalankan npm config get prefix

Untuk menampilkan semua modul global yang tersedia di folder itu gunakan npm ls -g --depth 0( depth 0untuk tidak menampilkan dependensinya).

Jika Anda ingin mengubah jalur modul global, gunakan npm config editdan masukkan prefix = /my/npm/global/modules/prefixfile atau gunakan npm config set prefix /my/npm/global/modules/prefix.

Ketika Anda menggunakan beberapa alat seperti nodist , mereka mengubah jalur instalasi platform-default modul npm global.

jakub.g
sumber
2
Anda menjawab pertanyaan tindak lanjut saya: "Dapatkah seseorang memberi tahu saya bagaimana saya dapat mengubah lokasi modul Node.js?" Catatan: Alasan mengapa ini penting bagi saya adalah agar saya tidak perlu mengubah PATH saya lagi. Saya menghapus komentar saran default di file npmrc yang dibuka {npm config get prefx}.
HeyZiko
"Ketika Anda menggunakan beberapa alat seperti nodist, mereka mengubah jalur instalasi platform-default modul npm global." +1
Jim Aho
65

Di windows saya biasa npm list -gmengetahuinya. Secara default paket saya (global) sedang diinstal ke C:\Users\[Username]\AppData\Roaming\npm.

9swampy
sumber
9
Just FYI - Ini adalah pengguna yang menjalankan% appdata% \ npm
Felix
19

Jika Anda mencari executable yang diinstal npm, mungkin karena Anda ingin meletakkannya di PATH Anda, Anda bisa melakukannya

npm bin

atau

npm bin -g
Ken Goodridge
sumber
Jika Anda telah menginstal paket npm secara global di mana node diinstal dengan homebrew dan kemudian npm diperbarui dengan npm sendiri, Anda mungkin mendapatkan command not foundkesalahan. Jika demikian, tambahkan di atas PATH Anda: export PATH=$PATH:$(npm bin -g)voila
jacob
18

Dalam versi sebelumnya dari modul NPM selalu ditempatkan di / usr / local / lib / node atau di mana pun Anda menentukan root npm dalam file .npmrc. Namun, dalam modul NPM 1.0+ dipasang di dua tempat. Anda dapat menginstal modul lokal ke aplikasi Anda di /.node_modules atau Anda dapat menginstalnya secara global yang akan menggunakan di atas.

Informasi lebih lanjut dapat ditemukan di https://github.com/isaacs/npm/blob/master/doc/install.md

Nick Campbell
sumber
4
Sesuatu yang perlu diperhatikan - dengan 1.0 modul disimpan di / usr / local / lib / node_modules.
Nick Campbell
@EricSmith tautan Anda rusak juga
nicolimo86
16

Bukan jawaban langsung tetapi dapat membantu ....

NPM juga memiliki folder cache, yang dapat ditemukan dengan menjalankan npm config get cache( %AppData%/npm-cachepada Windows).

Modul npm pertama kali diunduh di sini dan kemudian disalin ke folder global npm ( %AppData%/Roaming/npmdi Windows) atau folder spesifik proyek ( your-project/node_modules).

Jadi jika Anda ingin melacak paket-paket npm, dan beberapa caranya, daftar semua paket-paket npm yang diunduh (jika cache npm tidak dibersihkan) lihat folder ini. Struktur folder adalah sebagai{cache}/{name}/{version}

Ini dapat membantu juga https://docs.npmjs.com/cli/cache

Alireza Fattahi
sumber
14

Jika modul dipasang dengan -gflag global ( ), Anda bisa mendapatkan lokasi induk dengan menjalankan perintah berikut

npm get prefix

atau

npm ls -g --depth=0

yang akan mencetak lokasi beserta daftar modul yang dipasang

Bersulang :-)

Mohanraj Balasubramaniam
sumber
13

Cara termudah adalah melakukannya

daftar npm -g

untuk membuat daftar paket dan melihat lokasi instalasinya.

Saya telah menginstal npm melalui chololatey, jadi lokasinya

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

C: \ MyProgramData \ adalah lokasi repo cokelat.

Tharaka
sumber
12

Untuk mendapatkan daftar ringkas tanpa ketergantungan cukup gunakan

npm list -g --depth 0
Adam Bubela
sumber
6

Anda dapat menemukan modul yang dipasang secara global dengan perintah

npm list -g

Ini akan memberi Anda lokasi di mana modul node.js telah diinstal.

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

Jika Anda memasang modul node.js secara lokal di folder, Anda bisa mengetik perintah berikut untuk melihat lokasi.

npm list
Abdul Alim Shakir
sumber
4

Dari dokumen :

Di npm 1.0, ada dua cara untuk menginstal beberapa hal:

  • global —- Ini menjatuhkan modul {prefix}/lib/node_modules, dan menempatkan file yang dapat dieksekusi {prefix}/bin, di mana {prefix}biasanya ada sesuatu seperti /usr/local. Itu juga menginstal halaman manual {prefix}/share/man, jika disediakan.

  • secara lokal —- Ini menginstal paket Anda di direktori kerja saat ini. Modul Node masuk ./node_modules, executable masuk ./node_modules/.bin/, dan halaman manual tidak diinstal sama sekali.

Anda bisa mendapatkan Anda {prefix}dengan npm config get prefix. (Berguna saat Anda menginstal node dengan nvm).

edelans
sumber
3

Dari dokumen :

Paket dijatuhkan ke folder node_modules di bawah awalan. Ketika menginstal secara lokal, ini berarti Anda dapat meminta ("nama paket") untuk memuat modul utamanya, atau mengharuskan ("nama paket / lib / jalur / ke / sub / modul") untuk memuat modul lain.

Instalasi global pada sistem Unix pergi ke {awalan} / lib / node_modules. Instalasi global pada Windows buka {prefix} / node_modules (artinya, tidak ada folder lib.)

Paket lingkup diinstal dengan cara yang sama, kecuali mereka dikelompokkan bersama dalam sub-folder folder node_modules yang relevan dengan nama awalan lingkup dengan simbol @, mis. Npm install @ myorg / paket akan menempatkan paket dalam {prefix} / node_modules / @ myorg / package. Lihat cakupan untuk detail lebih lanjut.

Jika Anda ingin memerlukan () paket, maka instal secara lokal.

Anda bisa mendapatkan Anda {prefix}dengan npm config get prefix. (Berguna saat Anda menginstal node dengan nvm).

Baca tentang secara lokal .
Baca tentang secara global .

Randall Flagg
sumber
3

Di Ubuntu 14.04 mereka diinstal di

/usr/lib/node_modules

Ashutosh Singh
sumber
3

Saya mulai menjadi gila mencari konfigurasi yang sebenarnya, jadi di sini adalah semua daftar file konfigurasi di linux:

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

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

Kemudian dalam file awalan dikonfigurasi:

prefix=/usr

Awalan secara default ke / usr di linux, ke $ {APPDATA} \ npm di windows

Modul node berada di bawah pohon $ awalan, dan path harus berisi $ awalan / bin

Mungkin ada masalah:

  • Ketika Anda menginstal secara global, Anda menggunakan "sudo su" maka /root/.npmrcdapat digunakan!
  • Ketika Anda menggunakan secara lokal tanpa sudo: untuk pengguna Anda itu /home/youruser/.npmrc.
  • Saat jalur Anda tidak mewakili awalan Anda
  • Ketika Anda menggunakannya npm set -g prefix /usrmengatur / etc / npmrc global, tetapi tidak mengesampingkan lokal

Berikut adalah semua informasi yang hilang untuk menemukan apa yang dikonfigurasikan di mana. Semoga saya sudah lengkap.

pdem
sumber
2

Seperti jawaban yang lain katakan, cara terbaik adalah melakukannya

npm list -g

Namun, jika Anda memiliki sejumlah besar npmpaket yang diinstal, output dari perintah ini bisa sangat panjang dan sulit untuk digulir ke atas (kadang-kadang bahkan tidak mungkin untuk menggulir ke belakang itu).

Dalam hal ini, pipa keluar ke moreprogram, seperti ini

npm list -g | more
Raphi
sumber
2

Windows 10 : Ketika saya berlarinpm prefix -g, saya perhatikan bahwa lokasi instal berada di dalam jalur git shell yang saya gunakan untuk menginstal. Bahkan ketika lokasi itu ditambahkan ke path, perintah dari paket yang diinstal secara global tidak akan dikenali. Diperbaiki oleh:

  1. berlari npm config edit
  2. mengubah awalan ke 'C: \ Users \ username \ AppData \ Roaming \ npm'
  3. menambahkan jalur itu ke variabel jalur sistem
  4. instal ulang paket dengan -g.
Marc Sloth Eastman
sumber
2

Memperluas jawaban lain -

npm list -g

akan menunjukkan lokasi paket yang diinstal secara global.

Jika Anda ingin menampilkan daftar itu ke file yang dapat Anda cari dengan mudah di editor teks Anda:

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

TWLATL
sumber
1

Btw, npm akan mencari node_modules di folder induk (hingga root) jika tidak dapat menemukannya di lokal.

Vitaliy Markitanov
sumber
1

Jika Anda mencoba mengakses dir global dari kode, Anda dapat mundur dari process.execPath. Misalnya, untuk menemukan wsproxy, yang ada di dalam {NODE_GLOBAL_DIR}/bin/wsproxy, Anda dapat:

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

Ada juga cara kerja npmcli @ ec9fcc1/lib/npm.js#L254 dengan:

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

Lihat juga ec9fcc1/lib/install.js#L521 :

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

Di mana globalPrefixmemiliki set default di ec9fcc1/lib/config/defaults.js#L92-L105 dari:

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)
    }
}
DI
sumber
Bagaimana cara kerjanya? Sebagai contoh, Node binary berada di /usr/bin/node, tetapi jelas (karena ini adalah bin) modul tidak ada; sebaliknya mereka berada di /usr/lib/node_modules.
Florian Rappl
Diperbarui dengan mengacu pada npmimplementasi
AT
Sekarang ini adalah cerita yang berbeda; Anda membawa platform (baik) dan variabel env masing-masing (meskipun tidak menyebutkan apa fungsi penting seperti moduleName lakukan, tapi saya kira pembaca rata-rata akan dapat menyimpulkan). Terima kasih untuk modifikasi / koreksi!
Florian Rappl
1

Jika Anda memiliki Visual Studio diinstal, Anda akan menemukan itu datang dengan salinan node sendiri terpisah dari yang ada di jalan ketika Anda menginstal node sendiri - Tambang ada di C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Komunitas \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

Jika Anda menjalankan perintah npm dari dalam direktori ini, Anda akan mengetahui modul simpul mana yang diinstal di dalam visual studio.

Andy
sumber
0

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

Catatan: Jika Anda berada di suatu tempat dalam tipe folder cd ..sampai Anda berada di C:direktori. Lalu, ketik cd %USERPROFILE%\AppData\Roaming\npm\node_modules. Dan, secara ajaib %USERPROFILE%akan berubah menjadi Users\YourUserProfile\. Saya hanya ingin mengklarifikasi ide-ide yang disebutkan Deckodalam tanggapan pertama. npm list -gakan mencantumkan semua bit yang Anda instal secara global. Jika Anda perlu menemukan proyek Anda berhubungan npm packagekemudian cd 'your angular project xyz', kemudian jalankan npm list. Ini akan menampilkan daftar modul di npm package. Ini juga akan memberi Anda daftar yang dependencieshilang, dan Anda mungkin perlu menjalankan proyek itu secara efektif.

surendrapanday
sumber