Comando para remover todos os módulos npm globalmente?

381

Existe um comando para remover todos os módulos npm globais? Se não, o que você sugere?

EhevuTov
fonte

Respostas:

501

O comando a seguir remove todos os módulos npm globais. Nota: isso não funciona no Windows. Para uma versão funcional do Windows, consulte Resposta de Ollie Bennett .

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

Aqui está como funciona:

  • npm ls -gp --depth=0lista todos os módulos globais de nível superior (consulte a documentação do cli para ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'imprime todos os módulos que não são realmente o próprio npm (não termina com /npm)
  • xargs npm -g rm remove todos os módulos globalmente que passam pelo canal anterior
Kai Sternad
fonte
3
Para não ser o cara do awk golf, isso pode ser feito em um único comando do awk sem grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Explicação: divida em espaços ou @, apenas combine linhas com @, o nome do módulo será o penúltimo da última match ( $(NF-1)), portanto, apenas imprima se não énpm
Fotios
28
Aviso: a nova versão não filtra o módulo npm. Você não deseja remover esse.
neverfox
9
Também corri a nova versão sem ler os comentários. LEIA SEMPRE OS COMENTÁRIOS. Aqui está como restaurar o NPM: curl npmjs.org/install.sh | sh
Jack Allan
12
Uau. O NPM não facilita a desinstalação de coisas. Com o bundler e o gems, é trivial desinstalar tudo, o fato de que você precisa usar o grep e esse é um design horrível. Existe uma maneira mais simples de fazer isso? Quem realmente se lembra do código exigido na resposta?
Brian Dear
15
@neverfox e outros: Corrigido, o npm em si não é mais removido. Desculpe pelo transtorno
Kai Sternad
268

Para aqueles que usam o Windows , a maneira mais fácil de remover todos os pacotes npm instalados globalmente é excluir o conteúdo de:

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

Você pode chegar lá rapidamente digitando %appdata%/npmo explorer, o prompt de execução ou no menu Iniciar.

Ollie Bennett
fonte
5
Obrigado por este, e quanto ao npm-cache, devo removê-lo também?
Neil
2
não exclua a pasta npm se ele está lá
AutomatedMike
Nas versões posteriores do npm, isso parece ter mudado para %USERPROFILE%\AppData\npmsem o roaming.
Liam
11
Eu estava reinstalando todos os pacotes, me deparei com erros de EINTEGRITY ao executar npm installnovamente. Eu tive que excluir meu package-lock.jsonarquivo também.
precisa saber é o seguinte
para aqueles em janelas usando colher, o caminho é: C: \ Users \ username \ colher \ apps \ nodejs \ atuais \ bin \ node_modules
Ariel Mirra
176

Tentei a solução de Kai Sternad , mas me pareceu imperfeita. Restavam muitos símbolos especiais após o último awkda própria árvore deps.

Então, criei minha própria modificação da solução de Kai Sternad (com uma pequena ajuda da idéia da caxemira ):

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

npm ls -gp --depth=0lista todos os módulos npm instalados globalmente no formato analisável :

/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}' extrai os nomes dos módulos dos caminhos, formando a lista de todos os módulos instalados globalmente.

grep -vE '^(npm|)$' remove o próprio npm e as linhas em branco.

xargs -r npm -g rmchama npm -g rmpara cada módulo na lista.

Como a solução de Kai Sternad , ele só funcionará com * nix.

Leonid Beschastny
fonte
11
Onde esses arquivos estão armazenados, eu odeio esse método. Não existe apenas um package.json global em algum lugar?
Evan Carroll
2
@EvanCarroll Não, não existe esse arquivo, mas npminstala todos os seus módulos globais no mesmo diretório. A localização exata pode variar, mas normalmente é /usr/local/lib/node_modules.
Leonid Beschastny
3
Apenas FYI, este também remove npm
BrDaHa
11
Este comando funciona no OSX e não remove o npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate 03/07/2015
2
Este comando falhou ao manipular o pacote com escopo (como @angular/cli). Eu adiciono outro matcher para awke o comando de trabalho para mim se parece com o seguinte: #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

trabalhou para mim

  • sudo npm list -g --depth=0. lista todos os níveis superiores instalados
  • awk -F ' ' '{print $2}' se livrar de ├──
  • awk -F '@' '{print $1}' recebe a parte antes de '@'
  • sudo xargs npm remove -g remove o pacote globalmente
caxemira
fonte
Esta versão funcionou melhor para mim em junho de 14. A única adição poderia ser filtrar as dependências "UNMET" da lista, mas isso não é crítico, como npm remove UNMETsimplesmente o NOOP.
kangax
4
adicionaria grep -v npmpara que o próprio npm não seja removido:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo
lá vai, sua npm!
Todo o código é
26

Para aqueles que usam o Powershell :

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

Para limpar o cache:

npm cache clear
Kedar Vaidya
fonte
22

Basta mudar para o %appdata%/npmdiretório e executar o seguinte ...

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

EDIT: este comando quebra com npm 3.3.6 (nó 5.0). Agora estou usando o seguinte comando Bash, que mapeei para npm_uninstall_all no meu arquivo .bashrc:

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

Bônus adicionado? é muito mais rápido!

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

Como você desinstala todas as dependências listadas no package.json (NPM)?

jedmao
fonte
Amo isso. Mais rápido e simples :) Acabei de usar o grep -v npme nantes dotr
apnerve
16

no Windows, vá para o diretório "C: \ Users {nome de usuário} \ AppData \ Roaming" e remova manualmente a pasta npm

pradeep karunathilaka
fonte
11
Isso foi direto / útil para nós no Windows aqui. Obrigado.
rob2d
14

Se você deseja remover todos os pacotes que você instalou, pode usar o npm -g lscomando para encontrá-los e depois npm -g rmremovê-los.

Conta
fonte
7

Se você possui o jq instalado, pode continuar sem o grep / awk / sed:

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

No Debian e derivado, você pode instalar o jq com:

sudo apt-get install jq
eush77
fonte
Esta é uma resposta sólida com um jsonestilo apropriado .
quer
Se sudo for necessário, então:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger
5

SO não especificado pelo OP. Para Windows , esse script pode ser usado para nuke os módulos e o cache global e local do usuário.

Percebi no linux que a raiz global é verdadeiramente global para o sistema em vez do usuário especificado. Portanto, excluir a raiz global pode não ser uma boa ideia para um sistema compartilhado. Além disso, posso portar o script para o bash, se estiver interessado.

No Windows , salve em um arquivo cmd para executar.

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

Use este código para desinstalar qualquer pacote:

npm rm -g <package_name>
user1452840
fonte
11
A pergunta dizia claramente ALL, não um nome de pacote específico.
Polv 19/02
2

Tudo que você fez um bom trabalho. Isso é sugestões combinadas em um código de linha.

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

O que está diferente? A desinstalação será feita em um único comando, como:npm rm -g *** *** ***

FDisk
fonte
2

Você pode localizar todos os pacotes npm instalados no local:

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

e exclua o conteúdo do npm que você deseja remover.

Se o AppData não estiver sendo exibido, significa que está oculto e você pode ir para Exibir no explorador de arquivos e verificar os itens ocultos; então, você pode ver todas as pastas ocultas.

Sachin
fonte
1

Bem, se você estiver no Windows e quiser remover / desinstalar todos os node_modules, precisará executar as etapas a seguir.

  1. Vá para o prompt de comando do Windows
  2. Navegue para o diretório node_modules ( Não está na pasta node_modules )
  3. Digite o comando abaixo e dê-o por 1-2 minutos; ele desinstalará todos os diretórios dentro do node_module

     rmdir /s /q node_modules

Espero que isso ajude alguém no Windows

Anjum ....
fonte
1

se você tiver o Intellij Webstorm, poderá usar seu gerenciador de pacotes gráfico embutido.

abra-o como root e crie um projeto vazio. vamos para

Arquivo> Configurações> Idioma e estruturas> Node.js e NPM

lá você verá todos os pacotes instalados. A desinstalação é fácil, você pode selecionar e desmarcar qualquer pacote que deseja desinstalar, Ctrl + a woks também.

George Shalvashvili
fonte
1

Para yarn global

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

Ou, se você não se importa com o que realmente está dentro package.json

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

Isso também deve se aplicar ao NPM, mas não sei exatamente onde o NPM global está armazenado.

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

Aqui está uma solução mais elegante que eu tentei onde deixei a npm fazer todo o trabalho para mim.

# 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

Então, se você faz npm uninstallou npm removeesses módulos serão tratados como se fossem dependências normais de um projeto. Ele até gera um arquivo package-lock.json quando é feito:

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

solução sed

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

Basta colocar no seu console:

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

É um trabalho para mim ...

busterkika
fonte
11
Copta exato da solução já mencionada aqui , nesta mesma página.
Ivarni 28/07