Comando per rimuovere tutti i moduli npm a livello globale?


381

Esiste un comando per rimuovere tutti i moduli npm globali? In caso contrario, cosa suggerisci?

Risposte:


501

Il seguente comando rimuove tutti i moduli npm globali. Nota: questo non funziona su Windows. Per una versione di Windows funzionante, vedere la risposta di Ollie Bennett .

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

Ecco come funziona:

  • npm ls -gp --depth=0elenca tutti i moduli di livello superiore globali (consultare la documentazione cli per ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'stampa tutti i moduli che in realtà non sono npm (non termina con /npm)
  • xargs npm -g rm rimuove tutti i moduli a livello globale che superano la pipa precedente

3
Per non essere il tipo da golf awk, questo può essere fatto in un singolo comando awk senza grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Spiegazione: dividi su spazi o @, abbina solo le righe con @, il nome del modulo sarà il penultimo match ( $(NF-1)), quindi stampa solo se non lo ènpm
Fotios l'

28
Attenzione: la nuova versione non filtra il modulo npm. Non vuoi rimuoverlo.
Neverfox,

9
Ho anche eseguito la nuova versione senza leggere i commenti. LEGGI SEMPRE I COMMENTI. Ecco come ripristinare NPM: curl npmjs.org/install.sh | sh
Jack Allan,

12
Wow. NPM non semplifica la disinstallazione delle cose. Con bundler e gemme, è banale disinstallare tutto, il fatto che devi usare grep e tale è un design orribile. C'è un modo più semplice per farlo? Chi ricorda effettivamente il codice richiesto nella risposta?
Brian Caro

15
@neverfox e altri: risolto, npm stesso non viene più rimosso. Ci scusiamo per l'inconveniente
Kai Sternad,

268

Per coloro che utilizzano Windows , il modo più semplice per rimuovere tutti i pacchetti npm installati a livello globale è quello di eliminare il contenuto di:

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

Puoi arrivarci rapidamente digitando %appdata%/npmexplorer, esegui prompt o dal menu di avvio.


5
Grazie per questo, che dire di npm-cache, dovrei rimuovere anche quello?
Neil,

2
non eliminare la cartella npm se è presente
AutomatedMike,

Nelle versioni successive di npm questo sembra spostarsi %USERPROFILE%\AppData\npmsenza roaming.
Liam,

1
Stavo reinstallando tutti i pacchetti, ho riscontrato errori EINTEGRITY durante l'esecuzione npm install. Ho dovuto cancellare anche il mio package-lock.jsonfile.
ToastyMallows

per quelli che usano Windows scoop, il percorso è: C: \ Users \ nomeutente \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra

176

Ho provato la soluzione di Kai Sternad ma mi è sembrata imperfetta. C'erano molti simboli speciali rimasti dopo l'ultimo awkdall'albero delle deps stesso.

Quindi, mi è venuta in mente la mia modifica della soluzione di Kai Sternad (con un piccolo aiuto dall'idea del cashmere ):

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

npm ls -gp --depth=0elenca tutti i moduli npm installati a livello globale in formato analizzabile :

/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}' estrae i nomi dei moduli dai percorsi, formando l'elenco di tutti i moduli installati a livello globale.

grep -vE '^(npm|)$' rimuove npm stesso e righe vuote.

xargs -r npm -g rmchiama npm -g rmper ciascun modulo nell'elenco.

Come la soluzione di Kai Sternad , funzionerà solo con * nix.


1
Dove sono archiviati questi file, odio questo metodo. Non c'è solo un pacchetto globale. Json da qualche parte?
Evan Carroll,

2
@EvanCarroll No, non esiste un file simile, ma npminstalla tutti i suoi moduli globali nella stessa directory. La posizione esatta può variare, ma in genere lo è /usr/local/lib/node_modules.
Leonid Beschastny,

3
Cordiali saluti, anche questo rimuove npm
BrDaHa

11
Questo comando funziona su OSX e non rimuove npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate

2
Questo comando non è riuscito a gestire il pacchetto con ambito (come @angular/cli). Aggiungo un altro matcher per awke il comando funzionante per me è simile al seguente: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

ha funzionato per me

  • sudo npm list -g --depth=0. elenca tutti i livelli superiori installati
  • awk -F ' ' '{print $2}' si sbarazza di ├──
  • awk -F '@' '{print $1}' ottiene la parte prima di "@"
  • sudo xargs npm remove -g rimuove il pacchetto a livello globale

Questa versione ha funzionato meglio per me a partire dal giugno '14. L'unica aggiunta potrebbe essere quella di filtrare le dipendenze "UNMET" dall'elenco, ma ciò non è critico, come npm remove UNMETfa semplicemente NOOP.
Kangax,

4
aggiungerei in grep -v npmmodo che npm stesso non venga rimosso:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo

ecco qua, il tuo npm!
Tutto il

26

Per coloro che usano Powershell :

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

Per cancellare la cache:

npm cache clear

22

Passa alla tua %appdata%/npmdirectory ed esegui il seguente ...

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

EDIT: questo comando si interrompe con npm 3.3.6 (Nodo 5.0). Ora sto usando il seguente comando Bash, che ho mappato su npm_uninstall_all nel mio file .bashrc:

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

Bonus aggiunto? è molto più veloce!

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

Come disinstallare tutte le dipendenze elencate in package.json (NPM)?


Ama questo. Più veloce e semplice :) Ho appena usato grep -v npme nprima deltr
apnerve il

16

in Windows vai alla directory "C: \ Users {nome utente} \ AppData \ Roaming" e rimuovi manualmente la cartella npm


1
Questo è stato semplice / utile per noi su Windows qui. Grazie.
rob2d

14

Se si desidera rimuovere tutti i pacchetti installati, è possibile utilizzare il npm -g lscomando per trovarli e quindi npm -g rmrimuoverli.


7

Se hai installato jq , puoi andare anche senza grep / awk / sed:

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

Su Debian e derivati ​​puoi installare jq con:

sudo apt-get install jq

Questa è una risposta solida con uno jsonstile a proposito .
Richard Ayotte,

Se è richiesto sudo, allora:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger,

5

Sistema operativo non specificato dall'OP. Per Windows , questo script può essere utilizzato per annidare i moduli e la cache globali locali e dell'utente.

Ho notato su Linux che la radice globale è veramente globale per il sistema invece che per l'utente specificato. Pertanto, l'eliminazione della radice globale potrebbe non essere una buona idea per un sistema condiviso. A parte questo, posso portare la sceneggiatura a bash se interessati.

Per Windows , salvare in un file cmd per l'esecuzione.

@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

Usa questo codice per disinstallare qualsiasi pacchetto:

npm rm -g <package_name>

1
La domanda diceva chiaramente TUTTO, non un nome di pacchetto specifico.
Polv,

2

Tutti hai fatto un buon lavoro. Questo è combinato suggerimenti in un codice di riga.

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

Ciò che è diverso? La disinstallazione avverrà con un singolo comando come:npm rm -g *** *** ***


2

È possibile individuare tutti i pacchetti npm installati nella posizione:

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

ed elimina il contenuto di npm che desideri rimuovere.

Se AppData non viene visualizzato, significa che è nascosto e puoi andare su Visualizza in Esplora file e controllare gli elementi nascosti, quindi puoi vedere tutte le cartelle nascoste.


1

Bene, se sei su Windows e vuoi rimuovere / disinstallare tutti i node_modules, allora devi fare i seguenti passi.

  1. Vai al prompt dei comandi di Windows
  2. Passare alla directory node_modules ( non all'interno della cartella node_modules )
  3. Digita sotto il comando e daglielo per 1-2 minuti disinstallerà tutte le directory all'interno di node_module

     rmdir /s /q node_modules

Spero che questo possa aiutare qualcuno su Windows


1

se si dispone di Intellij Webstorm è possibile utilizzare il relativo gestore di pacchetti grafico incorporato.

aprilo come root e crea un progetto emtpy. vai a

File> Impostazioni> Lingua e frame> Node.js e NPM

lì vedrai tutti i pacchetti installati. La disinstallazione è semplice, puoi selezionare e deselezionare qualsiasi pacchetto che desideri disinstallare, anche Ctrl + a woks.


1

Per yarn global

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

Oppure, se non ti interessa ciò che è effettivamente dentro package.json

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

Questo dovrebbe valere anche per NPM, ma non sono sicuro di dove sia archiviato NPM Global.


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


0

Ecco una soluzione più elegante che ho provato dove ho lasciato che npm facesse tutto il lavoro per me.

# 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

Quindi se lo fai npm uninstallo npm removequesti moduli verranno trattati come se fossero normali dipendenze di un progetto. Genera anche un file package-lock.json al termine:

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

-1

soluzione sed

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

-5

Inserisci la tua console:

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

Il suo lavoro per me ...


1
Copto esatto della soluzione già menzionata qui , in questa stessa pagina.
Ivarni,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.