Guias do Levo · Desenvolvedores: tudo mais

Como encontrar e apagar pastas node_modules em todo o Mac

Toda pasta node_modules pode ser apagada. npm install, pnpm install ou yarn a refaz a partir do lockfile. A única questão é quais valem o tempo de reinstalar, e a resposta costuma ser os projetos que você não abre há um mês.

A lista Ready to free do Levo com pastas node_modules e caches de pacotes, cada uma com tamanho e motivo
O quêOndeÉ seguro apagar?
Dependências do projeto<project>/node_modulesSim, o install a refaz
Cópias aninhadasnode_modules/*/node_modulesDeixe-as, elas vão junto com a pasta pai
Pacotes vinculadosLinks simbólicos criados pelo npm linkApague o link, não a origem para a qual ele aponta
Pacotes globais/opt/homebrew/lib/node_modules ou o lib da sua versão do NodeNão, são ferramentas que você instalou de propósito

Por que há tantas

Cada projeto JavaScript guarda a própria cópia de todas as dependências, e a maioria guarda também as dependências das dependências. Um app React pequeno facilmente tem 300 MB. Um monorepo pode passar de 2 GB. Alguns anos de projetos paralelos, tutoriais e repositórios clonados somam dezenas de gigabytes em que você nunca pensa, porque as pastas ficam dentro de projetos que você só abre de vez em quando.

Como fazer você mesmo

Encontre todas

Abra o Terminal e liste todas as pastas node_modules dentro da sua pasta pessoal, com as maiores por último. O -prune impede o find de entrar em cada uma, e é isso que o mantém rápido.

find ~ -name node_modules -type d -prune -not -path "*/Library/*" -exec du -sh {} + 2>/dev/null | sort -h | tail -30

A lista mostra o tamanho e o caminho. Tudo dentro de ~/Library é ignorado de propósito: apps como editores e ferramentas Electron guardam ali as próprias cópias, e elas não são suas para remover. O mesmo vale para pastas dentro do pacote de um app.

Apague a pasta de um projeto

cd ~/Developer/old-project
rm -rf node_modules

Isso é permanente: o rm não usa a Lixeira. Confira o caminho antes de apertar Return. Se você preferir poder desfazer, arraste a pasta para a Lixeira no Finder, embora o Finder possa demorar bastante para mover uma pasta com 50.000 arquivos pequenos.

Apague várias de uma vez com o npkill

O npkill varre uma pasta, lista cada node_modules com o tamanho e a data da última modificação, e deixa você apagar com as setas e a barra de espaço. Não precisa instalar.

cd ~/Developer
npx npkill

Ordene por tamanho ou por última modificação e vá descendo a lista. A coluna da última modificação é a mais útil: uma pasta intocada há um ano é aposta segura.

Quais projetos pular

Com o pnpm, o node_modules é em grande parte links para um único store compartilhado, então apagar pastas de projetos libera menos do que o du sugere. Os arquivos só são liberados quando nada aponta para eles, e só depois do pnpm store prune. Veja como limpar os caches do npm, pnpm, Yarn e Bun.

Também vale olhar

Ao lado do node_modules, os projetos deixam saída de build: .next, .nuxt, dist, .turbo, .parcel-cache. Elas são refeitas na próxima build, mas confira se o dist não está commitado no git antes de removê-lo, já que alguns projetos o distribuem de propósito. Os projetos Python também deixam as próprias pastas pesadas, tratadas em como encontrar e apagar ambientes virtuais Python antigos.

Como o Levo faz

O Levo mantém um índice em tempo real do que enche o seu disco, então já sabe onde está cada node_modules e quanto ela pesa. Elas aparecem em Ready to free, em dependências de projetos, cada uma com tamanho e motivo, ao lado dos seus caches de pacotes.

O seu próprio agente de IA faz o julgamento. Ele lê cada projeto e decide se está parado, e o Levo só marca uma pasta quando nada está rodando dentro dela: nenhum servidor de desenvolvimento, nenhum arquivo aberto, nenhuma sessão de agente de código. Um projeto em que você mexeu esta manhã fica desmarcado. O agente só pode ler. É o Levo que apaga, e ele confere cada pasta de novo logo antes de removê-la.

Você escolhe um nível de limpeza, usa Select › Smartly, desmarca o que quiser manter e aperta Clean up. Com Move to Trash ativado, você pode usar Put back para devolver uma pasta. A configuração está descrita em Levo para desenvolvedores web. O monitoramento e as sugestões são grátis, e duas limpezas também, depois há uma licença vital.

Perguntas frequentes

Quanto espaço o node_modules usa?

Depende do projeto. Um app pequeno costuma ter de 200 a 400 MB e um monorepo grande pode passar de 2 GB. Ao longo de alguns anos de projetos, a maioria dos desenvolvedores encontra de 10 a 50 GB espalhados por dezenas de pastas.

Apagar o node_modules vai quebrar meu projeto?

Não. A pasta é refeita a partir do lockfile na próxima vez que você rodar npm install, pnpm install ou yarn. Os arquivos de código-fonte do projeto não são tocados. As exceções são arquivos editados à mão dentro da pasta e pacotes que foram retirados do npm.

É seguro apagar o node_modules com um servidor de desenvolvimento rodando?

Não faça isso. O servidor pode travar ou servir páginas quebradas, e um monitor de arquivos pode falhar no meio da exclusão. Pare o servidor primeiro.

Por que o rm -rf node_modules é tão lento?

Uma única pasta pode ter de 50.000 a 200.000 arquivos pequenos, e cada um precisa ser removido separadamente. É mais lento em um disco quase cheio. Apagar pelo Terminal é bem mais rápido do que mover a pasta para a Lixeira no Finder.

Preciso apagar o lockfile também?

Não. Mantenha o package-lock.json, o pnpm-lock.yaml ou o yarn.lock. É o registro que permite à reinstalação dar as mesmas versões.