Como excluir node_modules - pasta aninhada profunda no Windows

229

Ao tentar remover o diretório node_modules criado por npm install:

Os nomes dos arquivos de origem são maiores do que os suportados pelo sistema de arquivos. Tente mudar para um local com um nome de caminho mais curto ou renomeie para nomes mais curtos antes de tentar esta operação

Eu também tentei shift+ deletee ainda tenho o mesmo problema.

leoh
fonte
try renaming to shorter name(s) before attempting this operation
SLaks 27/01
3
Obrigado pela sua sugestão, @ SLaks! Eu deveria ter mencionado que tentei isso também, mas os arquivos e diretórios são muitos e profundos, tem coisas como C: \ Users \ meu_nome_do_usuário \ projs \ back-end \ node_modules \ imagemin \ node_modules \ imagemin-optipng \ node_modules \ optipng-bin \ node_modules \ bin-wrapper \ node_modules \ bin-check \ node_modules \ executable \ node_modules \ meow \ node_modules \ camelcase-keys \ node_modules \ ... e continua. É impraticável para renomear arquivos manualmente e eu espero que haja maneiras mais fáceis sem escrever um programa
Leoh
1
O Webstorm pode excluir todos.
ozzimpact
Usei a ferramenta Long Path Fixer e removi com êxito esta pasta ".meteor". ( long-path-fixer.en.softonic.com )
Vu Doan
RUN INSTALAR, npm instalar rimraf -g, RUN apagar, node_modules rimraf
Jinna Balu

Respostas:

438

Como esse é o melhor resultado do google, é isso que funcionou para mim:

Instale o RimRaf:

npm install rimraf -g

E na pasta do projeto, exclua a pasta node_modules com:

rimraf node_modules

Se você deseja excluir recursivamente:

rimraf .\**\node_modules

[ http://www.nikola-breznjak.com/blog/nodejs/how-to-delete-node_modules-folder-on-windows-machine/ ]

blub
fonte
não está funcionando aqui: "Erro: ENOTEMPTY, diretório não vazio". e o link fornecido não está funcionando!
olefrank
7
Eu sou o autor da postagem do blog. @ olefrank: isso costuma acontecer quando você tenta excluir a pasta inteira (não apenas node_modules) e também se a pasta for aberta em uma janela do Explorer. usagidon, obrigado por vincular a fonte original.
Nikola
2
Isso não vai ser útil se você não tem NodeJS, ou você está tentando excluir os módulos globais de NodeJS depois de desinstalá-lo (é por isso que eu tive que usar robocopy)
Zorgatone
1
Vou adicionar meus 2 centavos aqui para ser um pouco mais específico à questão. Você pode excluir todas as pastas node_modules de forma recursiva (usando globbing padrão) como este:rimraf .\**\node_modules
Artif3x
1
O comentário do @ Artif3x deve ser marcado como a melhor resposta para você! obrigado pela dica para apagar recursivamente :-)
Juan Stoppa
111

Simplesmente fiz isso usando o Winrar, isso pode parecer uma solução estranha, mas funcionando muito bem.

  • clique direito na node_modulespasta
  • selecione Add to archive ...no menu.
  • A caixa de diálogo Winrar é aberta
  • basta verificar a opção delete files after archiving
  • Não esqueça de excluir o node_modules.rar após a conclusão.


[UPDATE] Isso também funciona com o 7Zip


Eymen Elkum
fonte
7
uau, isso é sorrateiro! +1 Usando robocopy, aparentemente isso foi corrigido com novas npm ou algo assim.
ERP
1
@ChrisS Como funciona com o 7Zip? Especialmente ao usar a GUI!
bennos 27/02
4
Em 2016 (e especialmente em 2018), você não deveria ser tão inteligente para excluir um monte de arquivos.
Webelev
73

EXCLUIR apenas usando o comando DOS sem qualquer instalação:

Crie uma pasta vazia "test" na unidade C ou D e use o seguinte comando do DOS

robocopy /MIR c:\test D:\UserData\FolderToDelete > NUL

Depois de concluir o comando acima, sua pasta ficará vazia, agora você pode excluir a pasta.

Não se preocupe, sua pasta de teste estará sempre vazia, para que você possa excluí-la a qualquer momento.

Ali Adravi
fonte
12
melhor resposta, porque você não precisa instalar nada
luschn 20/12/2015
1
Depois de tentar o rimraf e adicionar uma pasta de rede, esta é a solução mais limpa que encontrei. Obrigado por compartilhar isso.
Danyim
1
ótima solução; fácil.
22816 bob_mazzo
2
Eu só fiz um addion menor: > NUL. Quando eu tentei isso, estava sendo acelerado pelo console e levaria 15 minutos ou mais. Com o redirecionamento no lugar, ele terminou em cerca de 2
Mike Caron
É engraçado que, para excluir alguns arquivos JS, você precise de mais uma biblioteca JS.
Linuxunil
30

Você pode usar o Git Bash para remover a pasta:

exemplo: c: \ users \ olefrank \ projects \ mynodeproject

rm -rf / c / usuários / olefrank / projects / mynodeproject

olefrank
fonte
9
Isso não funcionou no Windows 7. Diretório não está vazio erro
Miguel Stevens
5
Você precisa especificar também o sinalizador -d, que também excluirá diretórios.
precisa
ou -FR para recursivamente subir até o topo e exclua a pasta bem
Dan Kanze
@Karthiga -rf são sinalizadores / opções / parâmetros que informam ao RM como executar a operação de exclusão. rdiz para recursar em qualquer subdiretório e fdiz para forçar a exclusão (não avisar). -rfé uma convenção unix para especificar vários sinalizadores / opções de uma só vez.
Tim Coker
20

Eu usei o GitBash para remover a pasta!

rm -r node_modules

Demorou um pouco para excluir tudo, mas funcionou para mim!

Bruno DM
fonte
Isso funcionou para mim. Eu estava usando rimraf mais cedo. rimraf não funcionou e eu tentei isso.
Saiyaff Farouk
Este deve ser o principal comentário. Não, instalando algo apenas para remover algo .. Como alternativa, basta digitarRD node_modules
David MacNeil
15

Exclua a pasta Deep Netsted como node_modules no Windows

  1. Opção 1

    Excluir usando o rimrafpacote NPM

    • Abra o prompt de comando e altere seu diretório para a pasta em que a node_modulespasta existe.

    • Corre

      rimraf node_modules

    • Rimraf ERROR ausente e depois Instalar

      npm install rimraf -g

    • Quando a instalação estiver concluída, execute

      rimraf node_modules

  2. Opção 2 :

    Detele sem instalar nada

    • Crie uma pasta com o nome testem qualquer unidade

      robocopy /MIR c:\test D:\UserData\FolderToDelete > NUL

    • excluir a pasta teste FolderToDeletecomo ambos estão vazios

Por que isso é um problema no Windows?

Uma das estruturas de pastas aninhadas profundas é node_modules, o Windows não pode excluir a pasta, pois seu nome é muito longo . Para resolver isso, Solução fácil, instale um módulo de nó RimRaf

Jinna Balu
fonte
Error: EPERM: operation not permitted
Travis Heeter
1
Corrigido: eu tive que reiniciar meu computador. Algo estava usando node_modules, mas estava me dando um erro de permissão.
Travis Heeter
8

Experimente o código do Visual Studio

Depois de tentar muitas soluções, acho que essa é bem simples. basta abrir o projeto no código Visual e excluí-lo. a interface do usuário pode congelar por alguns segundos, mas definitivamente funcionará. Eu testei usando uma pasta node_modules de tamanho grande

insira a descrição da imagem aqui

obrigado

Umar Abbas
fonte
Estranhamente funciona !! :) Eu tenho tentado excluí-lo, mesmo no modo de segurança, mesmo usado, sudo sumas nada ajuda. Aliás, estou executando o OSX, o que nunca aconteceu comigo até a atualização para o Mojave.
forloop 17/01/19
6

Você pode usar o Git Bash para remover a pasta:

exemplo: c: \ users \ stu \ projects \ mynodeproject

rm / c / usuários / stu / projects / mynodeproject -rfd

Stuart.Sklinar
fonte
5

Eu tive um problema semelhante e o RD não funcionou, por algum motivo desconhecido.

O NPM pode se livrar de sua própria bagunça, portanto, se você fizer isso npm uninstall [module-name]para cada diretório em node_modules, você se livrará deles.

(Vou procurar como fazer um loop em lote isso mais tarde, para aqueles que têm muitas dependências.)

Chris
fonte
5
  1. npm install -g remove-node-modules
  2. cd para root e remove-node-modules
  3. ou remove-node-modules path/to/folder

Fonte:

https://github.com/j-quelly/node-cleanup

j_quelly
fonte
1
Por favor, não forneça apenas uma resposta apenas para o link. Pelo menos, adicione alguma explicação.
Cfi
4

simples, basta correr para o Windows Eu não testei para outros sistemas operacionais

rm -r node_modules

de fato, você pode excluir qualquer pasta com isso.

como rm -r AnyFolderWhichIsNotDeletableFromShiftDeleteOrDelete.

basta abrir o gitbash mover para a raiz da pasta e executar este comando

Espero que isso ajude.

Obrigado, Ajay Kotnala

Ajay Kotnala
fonte
2

No Windows, usando o Total Commander, tudo o que você precisa fazer é selecionar a pasta, clicar em shift+ delete. Não se esqueça da shiftchave.

Andrzej Gis
fonte
Essa é a melhor solução! TC exclui a pasta sem soluços e é muito rápido
Marina Dunst
2

Qualquer gerenciador de arquivos permite evitar esses problemas, por exemplo, Far Manager

insira a descrição da imagem aqui

Veniamin
fonte
2
Eu não tinha visto ninguém usando essa interface há mais de 10 anos ... J fiz o meu dia.
Rikki
2

Eu apenas del node_modules dentro da minha pasta de projeto no PowerShell, ele perguntará se você deseja removê-lo e sua pasta filho, apenas pressione 'Y' e pronto.

Roy.B
fonte
Simples. Obrigado
estin sunny
... \ node_modules tem filhos e o parâmetro Recurse não foi especificado. Se você continuar, todos os filhos serão removidos com o item. Você tem certeza que quer continuar? [Y] Sim [A] Sim para todos [N] Não [L] Não para todos [S] Suspender [?] Ajuda (o padrão é "Y"): S: Diretório C: \ ... \ node_modules \ ngx -coletor de cores \ dist não pode ser removido porque não está vazio. rd node_modules -recurse
AUSTX_RJL
1
rd node_modules -recurse
AUSTX_RJL
@AUSTX_RJL rd também funciona, mas eu nunca tive um problema com del node_modules .. fio, mas TNX qualquer maneira para outra maneira de apagar no PS
Roy.B
2

Tentei de tudo, mas não funcionou. Todos os métodos acima não fizeram nada. Por fim, consegui excluir via VSCode.

  1. Basta abrir sua pasta raiz com o VSCode.
  2. Selecione a node_modulespasta e exclua.
  3. Lucro. (Demorará few millisecondspara excluir.)

VSCode-delete.png

Junaid Atari
fonte
2

Eu criei um item de contexto do Windows para excluir rapidamente node_modules ou outras pastas. Uso-o quando o Windows não exclui uma pasta devido a alguns caracteres inválidos no caminho do diretório.

COMO INSTALAR?

  1. Instalar rimraf =>npm install rimraf -g

  2. Crie um novo arquivo chamado delete.bat, defina o conteúdo abaixo e copie-o parac:\windows\system32\

    delete.bat:

 @ECHO OFF
 ECHO.
 ECHO %CD% 
 ECHO.
 ECHO Are you sure to delete the folder with Rimraf?
 PAUSE
 SET FOLDER=%CD%
 CD /

 rimraf "%FOLDER%"

 rem DEL /F/Q/S "%FOLDER%" > NUL
 rem RMDIR /Q/S "%FOLDER%"

 EXIT
  1. Execute o arquivo fast-delete.reg para importar para o registro.

    Feito!

resultado final

Alper Ebicoglu
fonte
1

Uma solução que eu uso:

(Eu preferiria evitar instalar uma nova extensão (rimraf) ao trabalhar com ambientes de CI.)

  1. A) Renomeie packages.json para outra coisa. B) Especialmente no CI - após a instalação do npm, normalmente removo o arquivo em vez de renomeá-lo, mas se você precisar, não precisa fazer isso. Essa é sua escolha.
  2. executar npm init- isso criará um packages.jsonarquivo vazio (sem dependências)
  3. run npm prune- isso corresponderá ao node_modules com a seção de dependências de packages.json- que agora está vazia como resultado da etapa # 2.
  4. Se você escolheu # 1.A. etapa, exclua o recém-criado packages.jsone renomeie o original de packages.jsonvolta ao seu nome original.
Rikki
fonte
1

É muito fácil.

Apenas exclua todas as pastas dentro de node_modules e, em seguida, exclua a pasta node_module real.

Isso funciona para mim. Boa sorte....

Priyanka
fonte
Honestamente, esse é o caminho mais rápido, mas é necessária muita paciência. Ainda melhor se você excluir algumas pastas de cada vez.
Santosh
1

No Windows, minha solução Go está usando o rmdircomando :

rd /S .\node_modules\

Se falhar pela primeira vez - tente mais uma vez. Verifique também se você está executando scripts atualmente usando os módulos ( npm run serveou similares).

Korun
fonte
0

A partir desta aparência deste artigo do MSDN , parece que agora você pode ignorar a restrição MAX_PATH no Windows 10 v1607 (AKA 'atualização de aniversário') alterando um valor no registro - ou via Diretiva de Grupo

moloko
fonte
0

Basta usar o PowerShell ..

Execute o powershell e o cd na pasta pai e, em seguida:

rm [yourfolder]

como em:

rm node_modules
Darren Ford
fonte
0

Estou no Windows 10 e não consegui excluir pastas com a mensagem "o diretório não está vazio". Nem rimraf nem rm -rf funcionaram.

Copiar um arquivo de texto vazio para cada pasta fez o truque - eu consegui excluir a pasta node_modules completa.

ralusnom
fonte
0

Às vezes, mesmo se você instalar rimrafglobalmente, poderá ter uma rimrafdependência local (normalmente o SASS a possui). Nesse caso, eu executaria os seguintes comandos:

Siga as 2 primeiras etapas, conforme recomendado pelo usuário , se você tiver problemas ou erros, tente

npm uninstall rimraf & rimraf node_modules

isso excluirá o local rimrafe usará o global

user2869931
fonte
0

Não exatamente relacionado, mas como esse é o primeiro post que encontrei na minha busca por uma solução semelhante, acho que vale a pena postar aqui.

Eu estava com problemas de permissão no Windows 10 tentando excluir minha pasta node_modules após uma tentativa fracassada de instalar o electron-redux. Parece que electron-redux adicionou @types aos meus node_modules, que tinham permissões incorretas configuradas.

O rimraf não funcionou, pois ainda apresentava problemas de permissão.

Acabei renomeando node_modules e uma simples exclusão funcionou.

Jake Conniff
fonte
0

Ok, então o meu problema foi que eu tinha a pasta .bin dentro do node_modules e não consegui excluir isso. Tentei todas as soluções acima para o mesmo, mas nada funcionou.

O erro que estava se repetindo foi "você não tem permissão para excluir a pasta ou ela foi usada por algum outro programa".

Solução que eu encontrei "Eu tinha o antivírus instalado no meu PC, que sem saber estava usando os arquivos da pasta node_modules".

Eu desinstalei o antivírus ou você pode alterar a configuração da permissão da opção de configuração do antivírus (depende de qual antivírus você possui) .Agora eu posso excluir a pasta node_modules.

gaurav bhatt
fonte
0

O que funcionou para mim foi:

  1. fechou o console do gerenciador de nós
  2. fechou o ambiente de desenvolvimento Atom (código do visual studio) em que você está.
  3. exclua o node_modules

    npm install rimraf -g 
    rimraf node_modules
Sumanth
fonte
0

A maneira do PowerShell:

PS > rm -r -force node_modules

# The same, but without using aliases
PS > Remove-Item -Recurse -Force node_modules

E se você deseja excluir todos os node_modulessubdiretórios:

Nota: potencialmente perigoso, uma vez que é excluído recursivamente, certifique-se do que você está fazendo aqui

PS > dir -Path . -Filter node_modules -recurse | foreach {echo $_.fullname; rm -r -Force $_.fullname}
dgellow
fonte
0

Você pode usar outro pacote npm especificamente para esse fim. Instalando-o localmente na pasta usando

npm i rm-node-modules-recur

Se desejar, você também pode instalá-lo globalmente com a opção -g.

Se instalado localmente, você pode chamar o binário do diretório atual node_modules.bin \ usando

 .\node_modules\.bin\rmnodes "<top level directory within quotes>"

Se você escolheu a instalação global, basta usar

rmnodes "<top level directory within quotes>"

e é isso .. este pacote acabará excluindo node_modules de todos os subdiretórios de forma recursiva (no meu caso, cerca de 60 pastas ímpares) com facilidade. consulte o instantâneo anexado. usando rm-node-modules-recur

Maneesh Parihar
fonte
-1

Avance um pouco para várias pastas ...

Se você tiver uma pasta de projeto com várias 'compilações' que contenham 'node_module'. Gostar:

C:/Project/build-1/node_modules
C:/Project/build-2/node_modules
C:/Project/build-3/node_modules
C:/Project/build-4/node_modules

Você deseja excluir todas as pastas iniciando com "build"

! Primeiro instale o nodejs e o rimraf como sugerido acima!

Em seguida, vá para o caminho com o projeto e execute o comando do PowerShell

cd  C:/Project/
Get-ChildItem build* | foreach {rimraf -Path $_.FullName}

Vai demorar

Aidar Gatin
fonte
-1

Você pode criar um lote simples com base no @ mike-caron answer, para não precisar digitar todas as vezes o robocopycomando inteiro, apenas inserir o caminho para a pasta selecionada:

@echo off
ECHO What Directory would you like to empty?
ECHO Current path: %cd%
SET /p UserInputPath=Input relative path to directory:
ROBOCOPY /MIR empty_dir %cd%\%UserInputPath% > NUL
PAUSE

Aqui você está usando o diretório vazio denominado empty_dir no robocopycomando que precisa estar no mesmo diretório com o arquivo em lotes para que isso funcione. Após o arquivo em lote concluir seu trabalho, o diretório selecionado e o empty_dir diretório ficarão vazios para que você possa removê-los.

Criei um arquivo em lotes simples que cria uma pasta vazia e, após a robocopyexecução do comando, remove a pasta vazia e a pasta selecionada, de forma que a única coisa que você precisa fazer é inserir o caminho para a pasta selecionada que deseja excluir. É rápido e prático se você não quiser instalar coisas como o rimraf . Você pode baixá-lo aqui https://github.com/5imun/WinCleaner

Šime
fonte
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Do comentário
SherylHohman