Pular para o conteúdo

Este é o site do Mole para Mac. Quer ir para o site da versão para Windows?

Ir agora
Mole
MacWindows
Recursos Testados Depoimentos Preço Dúvidas Blog
EnglishEN 简体中文中 繁體中文繁 日本語日 한국어한 FrançaisFR DeutschDE ItalianoIT EspañolES
ComprarComprar Baixar

    Recursos do Mole e dúvidas sobre compra e uso.

    Blog

    Por que o Mole limpa menos cache do npm do que o npm cache verify

    DesenvolvimentoPublicado 5 outubro 2026Atualizado 18 outubro 20266 min de leitura

    Um usuário disse há pouco que o cache do npm ainda estava lá depois de uma passagem de manutenção do Mole, e que limpar por conta própria reduziu de 8 GB para 2 GB. Isso levou a outro olhar sobre caches de desenvolvedor: quais arquivos em cache ainda são necessários, quais perderam as referências e quais ferramentas já recolhem os próprios dados antigos.

    A investigação e as mudanças descritas aqui foram feitas em 5 de outubro. Elas chegaram no Mole 1.16.0.

    Por que o cache do npm continua crescendo

    O cache padrão do npm é ~/.npm/_cacache. content-v2 guarda pacotes e respostas do registro, enquanto index-v5 mapeia pedidos para esse conteúdo. Os arquivos de conteúdo são nomeados por hash, e várias entradas do índice podem apontar para o mesmo arquivo.

    Quando os metadados de um pacote mudam, o npm grava uma resposta nova. Consultas posteriores podem compactar entradas mais antigas do índice sem remover os arquivos de conteúdo, deixando arquivos sem referência no índice. A documentação do npm também diz que o cache não remove dados sozinho e cresce conforme pacotes são instalados.

    O usuário já tinha limpado o cache, então eu não tinha uma cópia de antes da limpeza e não pude confirmar o comando exato que ele executou. O relato de 8 GB para 2 GB começou esta investigação; não é uma medição do Mole recuperando 6 GB, nem prova de que todos os 6 GB estavam sem referência.

    O que o verify removeu neste teste

    O experimento usou cópias do cache do meu Mac com npm 11.19.1 e cacache 20.0.4. O original ficou intocado. Tinha cerca de um dia, com 309796162 bytes de conteúdo, e não um cache acumulado ao longo de vários meses.

    Regra Arquivos de conteúdo Bytes de conteúdo
    Sem referência de nenhuma entrada válida do índice 1 614295
    Realmente apagados por npm cache verify 6 25469972

    A diferença vem da implementação de verify do cacache. Ela coleta o conteúdo, confere a integridade e reconstrói o índice, mantendo a última entrada de cada chave. Entradas anteriores ainda podem conter metadados completos e abreviados usados por pedidos diferentes; não são simplesmente cópias antiga e nova de uma resposta.

    Na cópia, 11199796 bytes removidos pelo verify ainda eram referenciados por entradas válidas de outra variante de pedido. Algumas informações de pacote que podiam ser lidas offline antes da verificação passaram a devolver ENOTCACHED num npm view offline depois. Podiam ser buscadas de novo online, mas o comportamento do cache tinha mudado.

    O Mole adota a regra mais estreita: qualquer entrada válida do índice mantém o conteúdo. Encontrar só cerca de 0,6 MB nesta amostra é preferível a expulsar uma variante utilizável só para se aproximar do resultado do verify.

    Limpar arquivos sem uso sem limpar o cache inteiro

    A implementação nova analisa só o ~/.npm/_cacache padrão. Conteúdo sem referência com mais de um dia aparece como uma linha selecionada por padrão na seção de desenvolvedor de Limpar. Remover o cache inteiro do npm ainda exige revisão, e seleções que se sobrepõem contam os bytes uma vez.

    O Mole deixa esses arquivos em paz enquanto comandos como npm install ou npm ci estão gravando no cache. Se o índice não pode ser lido, os arquivos não são oferecidos para limpeza. As referências são conferidas de novo antes da exclusão; arquivos de índice e diretórios temporários ficam. O Mole não executa o comando de limpeza do npm em segundo plano.

    Preservar referências do índice não garante que todo projeto consiga sempre compilar offline. Um lockfile pode pedir um tarball direto pelo hash, e registros privados ou versões antigas podem não continuar disponíveis. Arquivos-fonte, lockfiles e qualquer saída de compilação que não possa ser recriada ainda precisam ser guardados à parte. Locais personalizados do cache do npm ficam fora desta mudança.

    Go, Cargo e pnpm precisam de decisões diferentes

    O Go já poda o cache de compilação. A implementação mantém entradas usadas nos últimos cinco dias mais uma margem de uma hora, ou 121 horas. O Mole antes oferecia o diretório inteiro do cache de compilação para limpeza padrão; esta mudança reduz isso à mesma regra de idade, mantendo entradas recentes que de outro modo teriam de ser recompiladas.

    O Cargo já tem coleta automática de cache, e nada nesta amostra estava na hora dela. Uma remoção anterior de fontes extraídas do registro foi seguida, cerca de 29 horas depois, por aproximadamente 157 MB de downloads e 1,06 GB de descompactação. O Mole não acrescenta um coletor automático separado para esse depósito; as linhas de limpeza só para revisão que já existiam continuam disponíveis.

    O depósito compartilhado do pnpm é diferente de novo. Na amostra em APFS, as contagens de hard link não conseguiam provar que o conteúdo estava sem uso; copiar esse critério selecionaria o depósito inteiro. Nenhum coletor novo de pnpm foi acrescentado. A contagem de hard links precisaria mostrar se um arquivo ainda está em uso naquele sistema de arquivos antes de o Mole poder usá-la para limpeza.

    Saída de compilação dentro de ferramentas globais e projetos antigos do Xcode

    O pake-cli instalado globalmente continha uma pasta src-tauri/target de cerca de 1,48 GiB: saída Rust da compilação do shell Tauri, e não o cache de download do npm. Pastas de compilação assim, que carregam um CACHEDIR.TAG válido escrito pela ferramenta, agora são oferecidas para revisão. O Mole mantém a ferramenta instalada e as dependências em node_modules, e não oferece essas pastas enquanto uma compilação Rust está em execução.

    O levantamento também encontrou 24 pastas de DerivedData do Xcode, cerca de 9 GiB, cujos caminhos de projeto registrados não existiam mais. Uma pasta inteira só é oferecida quando o projeto está confirmado como ausente no disco de inicialização e o Xcode não usou o cache correspondente há pelo menos duas semanas. Um disco externo ausente ou uma permissão de leitura negada não estabelece um projeto ausente. São achados daquele levantamento, não uma economia prometida em todo Mac; recompilar ainda leva tempo se a saída for necessária de novo.

    Confira qual camada você está limpando

    Este comando só de leitura pede ao npm o local real do cache, inclusive um caminho personalizado configurado.

    npm config get cache
    

    Quando instalações e compilações tiverem parado de gravar nesse cache, decida se vai executar npm cache verify. Ele muda o cache; não é um comando só de inspeção. Pastas node_modules de projeto e comandos instalados globalmente são camadas separadas que ele não limpa. O guia de cache de desenvolvedor cobre o fluxo mais amplo.

    Ferramentas de desenvolvimento ocupam cada vez mais espaço. O Mole limpa caches e encontra arquivos grandes.

    Experimentar o Mole

    Continue lendo

    • DesenvolvimentoLimpe caches de desenvolvimento sem quebrar o build5 min de leitura
    • DesenvolvimentoComo desinstalar Python e Node.js no Mac13 min de leitura
    • DesenvolvimentoCaches do JetBrains no Mac (IntelliJ, WebStorm, PyCharm)7 min de leitura

    Mole · 鼴

    Limpeza, apps e status para o Mac.

    v1.17.0 (334) · Novidades

    Produto

    Limpeza do Mac Desinstalar apps Otimização do Mac Análise de disco Monitoramento

    Suporte

    Ajuda Documentação Novidades Blog

    Informações legais

    Termos de uso Privacidade Reembolsos

    Recursos

    Para Windows Versão de terminal Programa de afiliados

    Contato

    Twitter hi@mole.fit

    Único site oficial do Mole mole.fit · Evite instaladores de origem desconhecida

    A versão de terminal continua gratuita.