Comando para eliminar todos los módulos npm a nivel mundial?

381

¿Hay un comando para eliminar todos los módulos npm globales? Si no, ¿qué sugieres?

EhevuTov
fuente

Respuestas:

501

El siguiente comando elimina todos los módulos npm globales. Nota: esto no funciona en Windows. Para una versión funcional de Windows, vea la respuesta de Ollie Bennett .

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

Así es como funciona:

  • npm ls -gp --depth=0enumera todos los módulos globales de nivel superior (consulte la documentación de cli para ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' imprime todos los módulos que en realidad no son npm en sí (no termina con /npm )
  • xargs npm -g rm elimina todos los módulos a nivel mundial que vienen sobre la tubería anterior
Kai Sternad
fuente
3
Para no ser el tipo de golf awk, esto se puede hacer en un solo comando awk sin grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Explicación: dividir en espacios o @, solo hacer coincidir las líneas con @, el nombre del módulo será el penúltimo partido ( $(NF-1)), así que solo imprima si no es asínpm
Fotios
28
Advertencia: la nueva versión no filtra el módulo npm. No quieres eliminar ese.
neverfox
99
También ejecuté la nueva versión sin leer los comentarios. SIEMPRE LEA LOS COMENTARIOS. Aquí es cómo restaurar NPM: curl npmjs.org/install.sh | sh
Jack Allan
12
Guau. NPM no facilita la desinstalación de cosas. Con bundler y gemas, es trivial desinstalar todo, el hecho de que tenga que usar grep y tal es un diseño horrible. ¿Hay una manera más simple de hacer esto? ¿Quién recuerda realmente el código requerido en la respuesta?
Brian Estimado
15
@neverfox y otros: corregido, npm ya no se elimina. Disculpe las molestias
Kai Sternad
268

Para aquellos que usan Windows , la forma más fácil de eliminar todos los paquetes npm instalados globalmente es eliminar el contenido de:

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

Puede llegar rápidamente escribiendo %appdata%/npmel explorador, el indicador de ejecución o desde el menú de inicio.

Ollie Bennett
fuente
55
Gracias por esto, ¿qué pasa con npm-cache? ¿Debería eliminar eso también?
Neil
2
no elimine la carpeta npm si está allí
AutomatedMike
En versiones posteriores de npm, esto parece haberse movido %USERPROFILE%\AppData\npmsin el roaming.
Liam
1
Estaba reinstalando todos los paquetes, me encontré con errores de EINTEGRITY cuando volví a ejecutarlos npm install. También tuve que eliminar mi package-lock.jsonarchivo.
ToastyMallows
para aquellos en Windows que usan scoop, la ruta es: C: \ Users \ username \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra
176

Probé Kai Sternad solución 's pero parecía imperfecta para mí. awkQuedaban muchos símbolos especiales después del último del árbol deps en sí.

Entonces, se me ocurrió mi propia modificación de la solución de Kai Sternad (con un poco de ayuda de la idea de la cachemira ):

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

npm ls -gp --depth=0enumera todos los módulos npm instalados globalmente en formato analizable :

/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}' extrae los nombres de los módulos de las rutas, formando la lista de todos los módulos instalados globalmente.

grep -vE '^(npm|)$' elimina npm y las líneas en blanco.

xargs -r npm -g rmllama npm -g rma cada módulo en la lista.

Al igual que la solución de Kai Sternad , solo funcionará con * nix.

Leonid Beschastny
fuente
1
¿Dónde se almacenan estos archivos? Odio este método. ¿No hay solo un paquete global.json en alguna parte?
Evan Carroll
2
@EvanCarroll No, no existe dicho archivo, pero npminstala todos sus módulos globales en el mismo directorio. La ubicación exacta puede variar, pero generalmente lo es /usr/local/lib/node_modules.
Leonid Beschastny
3
Solo para tu información, este también elimina npm
BrDaHa
11
Este comando funciona en OSX y no elimina npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate
2
Este comando no pudo manejar el paquete de ámbito (como @angular/cli). Agrego otro emparejador para awky el comando de trabajo para mí se ve así: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

trabajó para mi

  • sudo npm list -g --depth=0. enumera todos los niveles superiores instalados
  • awk -F ' ' '{print $2}' se deshace de ├──
  • awk -F '@' '{print $1}' obtiene la parte antes de '@'
  • sudo xargs npm remove -g elimina el paquete globalmente
cachemira
fuente
Esta versión funcionó mejor para mí a partir del 14 de junio. La única adición podría ser filtrar las dependencias "UNMET" de la lista, pero eso no es crítico, ya que npm remove UNMETsimplemente NOOP.
kangax
44
agregaría grep -v npmpara que npm en sí no se elimine:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo
ahí va, tu npm!
Todo va
26

Para aquellos que usan Powershell :

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

Para borrar el caché:

npm cache clear
Kedar Vaidya
fuente
22

Simplemente cambie a su %appdata%/npmdirectorio y ejecute lo siguiente ...

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

EDITAR: Este comando rompe con npm 3.3.6 (Nodo 5.0). Ahora estoy usando el siguiente comando Bash, que he asignado a npm_uninstall_all en mi archivo .bashrc:

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

¿Bono agregado? ¡es mucho más rápido!

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

¿Cómo desinstalar todas las dependencias enumeradas en package.json (NPM)?

jedmao
fuente
Me gusta esto. Más rápido y simple :) Acabo de usar grep -v npmy nantes deltr
apnerve
16

en Windows, vaya al directorio "C: \ Users {username} \ AppData \ Roaming" y elimine manualmente la carpeta npm

pradeep karunathilaka
fuente
1
Esto fue sencillo / útil para nosotros en Windows aquí. Gracias.
rob2d
14

Si desea eliminar todos los paquetes que ha instalado, puede usar el npm -g lscomando para encontrarlos y luego npm -g rmeliminarlos.

Cuenta
fuente
7

Si tiene instalado jq , puede ir incluso sin grep / awk / sed:

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

En Debian y derivados, puede instalar jq con:

sudo apt-get install jq
eush77
fuente
Esta es una respuesta sólida con un jsonestilo apropiado .
Richard Ayotte
Si se requiere sudo, entonces:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger
5

Sistema operativo no especificado por OP. Para Windows , esta secuencia de comandos se puede usar para destruir los módulos y caché locales y globales del usuario.

Noté en Linux que la raíz global es verdaderamente global para el sistema en lugar del usuario dado. Por lo tanto, eliminar la raíz global podría no ser una buena idea para un sistema compartido. Aparte de eso, puedo transferir el script a bash si estoy interesado.

Para Windows , guarde en un archivo cmd para ejecutar.

@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
fuente
3

Use este código para desinstalar cualquier paquete:

npm rm -g <package_name>
usuario1452840
fuente
1
La pregunta decía claramente TODO, no un nombre de paquete específico.
Polv
2

Todo lo que hiciste buen trabajo. Estas son sugerencias combinadas en un código de línea.

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

¿Que es diferente? La desinstalación se realizará en un solo comando como:npm rm -g *** *** ***

FDisk
fuente
2

Puede ubicar todos sus paquetes npm instalados en la ubicación:

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

y elimine el contenido de npm que desea eliminar.

Si AppData no se muestra, significa que está oculto y puede ir a Ver en el explorador de archivos y verificar los elementos ocultos, luego puede ver todas las carpetas ocultas.

Sachin
fuente
1

Bueno, si está en Windows y desea eliminar / desinstalar todos los módulos de nodo, entonces debe seguir los siguientes pasos.

  1. Ir al símbolo del sistema de Windows
  2. Navegue al directorio node_modules ( no dentro de la carpeta node_modules )
  3. Escribe el siguiente comando y dale durante 1-2 minutos, desinstalará todos los directorios dentro de node_module

     rmdir /s /q node_modules

Espero que esto ayude a alguien en Windows

Anjum ...
fuente
1

si tiene Intellij Webstorm, puede usar su administrador de paquetes gráfico incorporado.

ábralo como root y cree un proyecto vacío. ir

Archivo> Configuración> Idioma y marcos> Node.js y NPM

Allí verá todos los paquetes instalados. Desinstalar es fácil, puede seleccionar y deseleccionar cualquier paquete que desee desinstalar, Ctrl + a woks también.

George Shalvashvili
fuente
1

por yarn global

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

O, si no te importa lo que realmente hay dentro package.json

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

Esto también debería aplicarse a NPM, pero no estoy exactamente seguro de dónde se almacena NPM global.

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

Aquí hay una solución más elegante que probé donde dejé que npm hiciera todo el trabajo por mí.

# 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

Luego, si lo hace, npm uninstallo npm removeestos módulos serán tratados como si fueran dependencias normales de un proyecto. Incluso genera un archivo package-lock.json cuando se hace:

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

solución sed

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

Solo pon en tu consola:

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

Es trabajo para mi ...

Busterkika
fuente
1
Departamento exacto de solución ya mencionado aquí , en esta misma página.
ivarni