Memerintahkan untuk menghapus semua modul npm secara global?


381

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

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

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.


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.


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

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

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


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


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.


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

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%

3

Gunakan kode ini untuk menghapus instalasi paket apa pun:

npm rm -g <package_name>

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 *** *** ***


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.


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


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.


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.


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


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  

-1

solusi sed

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

-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 ...


1
Solusi tepat yang telah disebutkan di sini , di halaman yang sama ini.
ivarni
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.