Memerintahkan untuk menghapus semua modul npm secara global?

381

Apakah ada perintah untuk menghapus semua modul npm global? Jika tidak, apa yang Anda sarankan?

EhevuTov
sumber

Jawaban:

501

Perintah berikut menghapus semua modul npm global. Catatan: ini tidak berfungsi di Windows. Untuk versi Windows yang berfungsi, lihat Ollie Bennett's Answer .

npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm

Inilah cara kerjanya:

  • npm ls -gp --depth=0daftar semua modul tingkat global (lihat dokumentasi CLI untuk ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'mencetak semua modul yang sebenarnya bukan npm itu sendiri (tidak berakhir dengan /npm)
  • xargs npm -g rm menghapus semua modul secara global yang melewati pipa sebelumnya
Kai Sternad
sumber
3
Bukan menjadi pemain golf awk, ini dapat dilakukan dalam satu perintah awk tanpa grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Penjelasan: pisah pada spasi atau @, hanya baris yang cocok dengan @, nama modul akan menjadi pertandingan kedua terakhir ( $(NF-1)), jadi hanya cetak jika tidaknpm
Fotios
28
Peringatan: versi baru tidak menyaring modul npm. Anda tidak ingin menghapus yang itu.
neverfox
9
Saya juga menjalankan versi baru tanpa membaca komentar. SELALU BACA KOMENTAR. Berikut ini cara mengembalikan NPM: curl npmjs.org/install.sh | sh
Jack Allan
12
Wow. NPM tidak membuatnya mudah untuk menghapus instalan sesuatu. Dengan bundler dan permata, itu sepele untuk menghapus semuanya, fakta bahwa Anda harus menggunakan grep dan itu adalah desain yang mengerikan. Apakah ada cara yang lebih sederhana untuk melakukan ini? Siapa yang benar-benar ingat kode yang diperlukan dalam jawaban?
Brian Dear
15
@neverfox dan lainnya: Tetap, npm sendiri tidak lagi dihapus. Maaf atas ketidaknyamanan ini
Kai Sternad
268

Bagi mereka yang menggunakan Windows , cara termudah untuk menghapus semua paket npm yang terinstal secara global adalah dengan menghapus konten dari:

C:\Users\username\AppData\Roaming\npm

Anda dapat sampai di sana dengan cepat dengan mengetikkan %appdata%/npmexplorer, menjalankan prompt, atau dari menu mulai.

Ollie Bennett
sumber
5
Terima kasih untuk yang satu ini, bagaimana dengan npm-cache, haruskah saya menghapusnya juga?
Neil
2
jangan hapus folder npm jika ada
AutomatedMike
Dalam versi npm selanjutnya ini sepertinya dipindahkan ke %USERPROFILE%\AppData\npmtanpa roaming.
Liam
1
Saya menginstal ulang semua paket, saya mengalami kesalahan EINTEGRITY ketika berjalan npm installlagi. Saya harus menghapus package-lock.jsonfile saya juga.
ToastyMallows
untuk mereka yang menggunakan windows scoop, pathnya adalah: C: \ Users \ username \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra
176

Saya mencoba solusi Kai Sternad tetapi tampaknya tidak sempurna bagi saya. Ada banyak simbol khusus yang tersisa setelah yang terakhir awkdari pohon deps itu sendiri.

Jadi, saya datang dengan modifikasi saya sendiri dari solusi Kai Sternad (dengan sedikit bantuan dari ide cashmere ):

npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm

npm ls -gp --depth=0daftar semua modul npm yang terinstal secara global dalam format yang dapat diuraikan :

/home/leonid/local/lib
/home/leonid/local/lib/node_modules/bower
/home/leonid/local/lib/node_modules/coffee-script
...

awk -F/node_modules/ '{print $2}' mengekstrak nama modul dari jalur, membentuk daftar semua modul yang diinstal secara global.

grep -vE '^(npm|)$' menghapus npm sendiri dan baris kosong.

xargs -r npm -g rmpanggilan npm -g rmuntuk setiap modul dalam daftar.

Seperti solusi Kai Sternad , itu hanya akan bekerja di bawah * nix.

Leonid Beschastny
sumber
1
Di mana file-file ini disimpan, saya benci metode ini. Apakah tidak ada hanya paket global. Bekerja di suatu tempat?
Evan Carroll
2
@ EvanCarroll Tidak, tidak ada file seperti itu, tetapi npminstal semua modul globalnya ke direktori yang sama. Lokasi yang tepat mungkin berbeda, tetapi biasanya itu /usr/local/lib/node_modules.
Leonid Beschastny
3
Hanya FYI, Yang ini juga menghilangkan npm
BrDaHa
11
Perintah ini berfungsi pada OSX dan tidak menghapus npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate
2
Perintah ini gagal menangani paket scoped (seperti @angular/cli). Saya menambahkan korek api lain untuk awkdan perintah kerja untuk saya terlihat seperti ini:npm ls -gp --depth=0 | awk -F/ '/node_modules\/@/ {print $(NF-1)"/"$NF} /node_modules\/[^@]/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
Jack Q
64
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'  | sudo xargs npm remove -g

bekerja untukku

  • sudo npm list -g --depth=0. daftar semua level atas diinstal
  • awk -F ' ' '{print $2}' menghilangkan ├──
  • awk -F '@' '{print $1}' mendapat bagian sebelum '@'
  • sudo xargs npm remove -g menghapus paket secara global
kasmir
sumber
Versi ini bekerja paling baik untuk saya pada Juni '14. Satu-satunya tambahan adalah menyaring dependensi "UNMET" dari daftar, tetapi itu tidak penting, seperti npm remove UNMEThalnya NOOP.
kangax
4
akan menambahkan grep -v npmsehingga npm itu sendiri tidak dihapus:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo
itu dia, npm Anda!
Semua ini dilakukan
26

Bagi mereka yang menggunakan Powershell :

npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name }

Untuk menghapus cache:

npm cache clear
Kedar Vaidya
sumber
22

Cukup pindah ke %appdata%/npmdirektori Anda dan jalankan yang berikut ...

for package in `ls node_modules`; do npm uninstall $package; done;

EDIT: Perintah ini rusak dengan npm 3.3.6 (Node 5.0). Saya sekarang menggunakan perintah Bash berikut, yang telah saya petakan ke npm_uninstall_all di file .bashrc saya:

npm uninstall `ls -1 node_modules | tr '/\n' ' '`

Bonus tambahan? itu jauh lebih cepat!

https://github.com/npm/npm/issues/10187

Bagaimana Anda menghapus semua dependensi yang tercantum dalam package.json (NPM)?

jedmao
sumber
Suka ini. Lebih cepat dan sederhana :) Saya baru saja menggunakan grep -v npmdan nsebelumtr
apnerve
16

di windows buka direktori "C: \ Users {username} \ AppData \ Roaming" dan hapus folder npm secara manual

Pradeep Karunathilaka
sumber
1
Ini sangat mudah / bermanfaat bagi kami di Windows di sini. Terima kasih.
rob2d
14

Jika Anda ingin menghapus semua paket yang telah Anda instal, Anda dapat menggunakan npm -g lsperintah untuk menemukannya, dan kemudian npm -g rmmenghapusnya.

Tagihan
sumber
7

Jika Anda telah menginstal jq , Anda dapat pergi bahkan tanpa grep / awk / sed:

npm ls -g --json --depth=0 |
  jq -r '.dependencies|keys-["npm"]|join("\n")' |
  xargs npm rm -g

Di Debian dan turunan Anda dapat menginstal jq dengan:

sudo apt-get install jq
eush77
sumber
Ini adalah jawaban yang solid dengan jsongaya apropos .
Richard Ayotte
Jika sudo diperlukan maka:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger
5

OS tidak ditentukan oleh OP. Untuk Windows , skrip ini dapat digunakan untuk menyembunyikan modul dan cache global lokal dan pengguna.

Saya perhatikan di linux bahwa root global benar-benar global ke sistem daripada pengguna yang diberikan. Jadi menghapus root global mungkin bukan ide yang baik untuk sistem bersama. Selain itu, saya dapat port script untuk bash jika tertarik

Untuk Windows , simpan ke file cmd untuk dijalankan.

@ECHO OFF
SETLOCAL EnableDelayedExpansion 
SETLOCAL EnableExtensions

SET /A ecode=0

:: verify
SET /P conf="About to delete all global and local npm modules and clear the npm cache. Continue (y/[n])?
IF /I NOT "%conf%"=="y" (
  ECHO operation aborted
  SET /A ecode=!ecode!+1
  GOTO END
)

:: wipe global and local npm root
FOR %%a IN ("" "-g") DO (

  :: get root path into var
  SET cmd=npm root %%~a
  FOR /f "usebackq tokens=*" %%r IN (`!cmd!`) DO (SET npm_root=%%r)

  :: paranoid
  ECHO validating module path "!npm_root!"
  IF "!npm_root:~-12!"=="node_modules" (
    IF NOT EXIST "!npm_root!" (
      ECHO npm root does not exist "!npm_root!"
    ) ELSE (
      ECHO deleting "!npm_root!" ...
      :: delete
      RMDIR /S /Q "!npm_root!"
    )
  ) ELSE (
      ECHO suspicious npm root, ignoring "!npm_root!"
  )
)

:: clear the cache
ECHO clearing the npm cache ...
call npm cache clean

:: done
ECHO done

:END

ENDLOCAL & EXIT /b %ecode%
bvj
sumber
3

Gunakan kode ini untuk menghapus instalasi paket apa pun:

npm rm -g <package_name>
pengguna1452840
sumber
1
Pertanyaannya dengan jelas mengatakan SEMUA, bukan nama paket tertentu.
Polv
2

Semua yang Anda lakukan dengan baik. Ini adalah saran gabungan untuk satu kode baris.

npm rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`

Apa perbedaannya? Penghapusan instalasi akan dilakukan dalam satu perintah seperti:npm rm -g *** *** ***

FDisk
sumber
2

Anda dapat menemukan semua paket npm yang terinstal di lokasi:

C:\Users\username\AppData\Roaming\npm

dan hapus konten npm yang ingin Anda hapus.

Jika AppData tidak ditampilkan, itu berarti tersembunyi dan Anda dapat pergi ke Lihat di file explorer dan memeriksa item Tersembunyi maka di sana Anda dapat melihat semua folder yang tersembunyi.

Sachin
sumber
1

Nah jika Anda berada di windows, dan ingin menghapus / uninstall semua node_modules maka Anda perlu melakukan langkah-langkah berikut.

  1. Pergi ke command prompt windows
  2. Arahkan ke direktori node_modules ( Tidak di dalam folder node_modules )
  3. Ketik perintah di bawah ini dan berikan selama 1-2 menit itu akan menghapus semua direktori di dalam node_module

     rmdir /s /q node_modules

Semoga ini bisa membantu seseorang di windows

Anjum ....
sumber
1

jika Anda memiliki Intellij Webstorm Anda dapat menggunakan manajer paket grafis bawaannya.

buka sebagai root dan buat proyek emtpy. pergi ke

File> Pengaturan> Bahasa dan Kerangka Kerja> Node.js dan NPM

di sana Anda akan melihat semua paket yang diinstal. Menghapus instalan mudah, Anda dapat memilih dan membatalkan paket yang ingin Anda hapus, Ctrl + a wok juga.

George Shalvashvili
sumber
1

Untuk yarn global

nano ~/.config/yarn/global/package.json
<Manually remove all packages from package.json>
yarn global add

Atau, jika Anda tidak peduli dengan apa yang sebenarnya ada di dalam package.json

echo {} >  ~/.config/yarn/global/package.json && yarn global add

Ini juga harus berlaku untuk NPM, tetapi saya tidak yakin di mana NPM global disimpan.

Polv
sumber
0
npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g
rxw
sumber
0

Berikut adalah solusi yang lebih elegan yang saya coba di mana saya membiarkan npm melakukan semua pekerjaan untuk saya.

# On Linux Mint 19.1 Cinnamon
# First navigate to where your global packages are installed.

$ npm root # returns /where/your/node_modules/folder/is
$ cd /where/your/node_modules/folder/is # i.e for me it was cd /home/user/.npm-packages/lib/node_modules

Kemudian jika Anda melakukannya npm uninstallatau npm removemodul-modul ini akan diperlakukan seolah-olah mereka adalah dependensi normal suatu proyek. Itu bahkan menghasilkan file package-lock.json ketika sudah selesai:

$ npm remove <package-name> # you may need sudo if it was installed using sudo  
IskandarG
sumber
-1

solusi sed

npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g
koola
sumber
-5

Masukkan saja konsol Anda:

sudo npm list -g --depth = 0. | awk -F '' '{print $ 2}' | awk -F '@' '{print $ 1}' | sudo xargs npm hapus -g

Ini bekerja untuk saya ...

busterkika
sumber
1
Solusi tepat yang telah disebutkan di sini , di halaman yang sama ini.
ivarni