node_modules lotando o disco? Encontre e apague no Mac
É seguro apagar as pastas node_modules de qualquer projeto em que você não está trabalhando agora. Elas contêm apenas dependências baixadas, e o comando de instalação as recria. Um único comando do Terminal lista todas as que existem na sua pasta de projetos por tamanho, para você ver quais vale a pena remover.
Os gerenciadores de pacotes também mantêm caches de download fora dos seus projetos. Eles também podem ser limpos, com o comando próprio de cada ferramenta.
Por que node_modules ocupa tanto espaço
Com o npm e o Yarn, cada projeto recebe sua própria cópia completa de cada dependência e de tudo de que essas dependências precisam. Um app web pequeno pode puxar uma árvore de pacotes muito grande. Dez projetos antigos significam dez cópias separadas.
As pastas também são feitas de uma quantidade enorme de arquivos pequenos, e é por isso que são lentas para copiar, para incluir em backups e para indexar. Nada ali é seu. A lista do que instalar está em package.json e no lockfile, e são eles que você guarda.
Liste todas as pastas node_modules por tamanho
O comando abaixo procura diretórios node_modules em uma pasta, mede cada um e ordena a lista com os maiores por último. Ele apenas lê. Troque ~/Projects pela pasta em que você guarda seu código.
Aponte o comando para a sua pasta de código, não para a pasta pessoal inteira. Os apps e os editores mantêm suas próprias pastas node_modules dentro de ~/Library e dentro dos pacotes dos aplicativos, e elas fazem parte do app, não são restos. Apagá-las quebra o app.
find ~/Projects -type d -name node_modules -prune -exec du -sh {} + 2>/dev/null | sort -hDecida quais apagar
Apagar node_modules custa só o tempo da próxima instalação, então a pergunta é quais projetos você vai abrir em breve.
- Projetos em que você não mexe há meses: apague. É onde está a maior parte do espaço.
- Repositórios clonados que você só leu ou testou uma vez: apague.
- Projetos em que você está trabalhando esta semana: deixe. Você só teria de reinstalar logo em seguida.
- Projetos sem lockfile: pense antes. Uma instalação nova pode resolver para versões mais recentes de alguns pacotes do que as que você tinha, o que pode mudar o comportamento.
- Projetos que dependem de um registro privado ou de pacotes que talvez não estejam mais publicados: confirme que ainda consegue instalar antes de apagar.
Apague com segurança
Antes, pare qualquer servidor de desenvolvimento ou compilação em execução no projeto. Depois, no Finder, abra a pasta do projeto e mova node_modules para o Lixo. Esse é o jeito que perdoa erros: se a reinstalação falhar, você pode colocar a pasta de volta antes de esvaziar o Lixo.
Quando voltar ao projeto, execute o comando de instalação do gerenciador de pacotes que ele usa, mostrado abaixo para o npm. Se o projeto tiver um package-lock.json, npm ci instala exatamente as versões registradas nele.
Outras saídas de compilação nos mesmos projetos podem seguir o mesmo caminho: pastas como .next, dist, build e .turbo são recriadas pela próxima compilação.
npm installLimpe os caches dos gerenciadores de pacotes
Fora dos seus projetos, cada gerenciador de pacotes mantém um cache de tudo o que já baixou, para que as instalações repetidas sejam rápidas. Esses caches só crescem. Os comandos abaixo são os jeitos documentados de limpá-los, e cada um apaga apenas o cache de download daquela ferramenta. Seus projetos continuam funcionando, e a próxima instalação baixa tudo de novo.
- O npm mantém o cache em ~/.npm. O npm pede --force porque trata o cache como capaz de se reparar sozinho. Para verificá-lo sem limpar, execute npm cache verify.
- O Yarn 1 mantém um cache global, e yarn cache clean o esvazia. Nas versões mais novas do Yarn, execute o comando dentro de um projeto.
- O pnpm mantém um armazenamento compartilhado. pnpm store prune remove apenas os pacotes que nenhum projeto do seu Mac referencia mais.
- O Bun mantém um cache global, e bun pm cache rm o esvazia.
npm cache clean --force
yarn cache clean
pnpm store prune
bun pm cache rmUse menos espaço desde o início
O pnpm guarda cada versão de um pacote uma única vez no disco e a vincula a cada projeto que a usa, então dez projetos com as mesmas dependências ocupam pouco mais do que um. Se node_modules é um problema recorrente, passar os projetos novos para o pnpm é a solução duradoura.
Um efeito colateral é que os tamanhos parecem errados. Uma ferramenta que soma os tamanhos dos arquivos conta um pacote vinculado uma vez por projeto, então uma pasta node_modules do pnpm pode parecer muito maior do que o espaço que realmente usa.
Também ajuda manter o código fora das pastas sincronizadas. Uma pasta node_modules dentro do iCloud Drive ou do Dropbox significa uma quantidade enorme de arquivos pequenos sendo enviados sem nenhum benefício.
Como o Diskzy trata node_modules
A aba Clean up (Limpeza) do Diskzy encontra as pastas de compilação de projetos, incluindo node_modules, .build, Pods e ambientes virtuais, onde quer que estejam no disco. Uma pasta fica desmarcada se o projeto dela mudou nos últimos 14 dias, então os projetos em que você está trabalhando não são tocados, a não ser que você os escolha.
Os caches do npm, do Yarn, do pnpm e do Bun aparecem na lista e vêm marcados. Tudo o que é removido vai para o Lixo, então uma pasta pode ser colocada de volta até você esvaziá-lo.
Perguntas frequentes
- É seguro apagar node_modules?
- Sim, dentro dos seus próprios projetos. Ela guarda apenas dependências baixadas, e npm install, yarn install ou pnpm install a recria. Não apague as pastas node_modules dentro de apps ou dentro de ~/Library.
- Como encontro todas as pastas node_modules no meu Mac?
- Execute find com -name node_modules e -prune na pasta em que você guarda seu código e passe cada resultado para du -sh para ver o tamanho. O comando completo está neste guia.
- Apagar node_modules vai quebrar meu projeto?
- Não. O projeto não roda até você instalar de novo, e depois funciona como antes. Com um lockfile, as mesmas versões são instaladas.
- É seguro limpar o cache do npm?
- Sim. O cache é uma cópia local dos pacotes que o npm já baixou. Na próxima instalação, o npm busca no registro o que estiver faltando.
- Por que minha pasta node_modules é maior que o projeto inteiro?
- Porque ela contém todas as dependências e tudo de que essas dependências dependem. Seu próprio código costuma ser uma pequena fração do total.
Guias relacionados
- node_modules<project>/node_modules
- npm cache~/.npm/_cacache
- pnpm store~/Library/pnpm/store
- Yarn cache~/Library/Caches/Yarn
- Playwright browsers~/Library/Caches/ms-playwright
Guias de desinstalação
Veja para onde foi o espaço do seu Mac
O Diskzy mapeia o disco, explica os Dados do Sistema e limpa o que é seguro. Grátis por 72 horas, depois US$ 9 uma única vez para 2 Macs.
Experimente o Diskzy grátis