Knip vs depcheck: Encontre código e dependências não usados
depcheck encontra dependências npm não usadas e ausentes; Knip faz isso e mais, também reportando arquivos, exports e tipos não usados em um projeto ou monorepo.
Ambas as ferramentas ajudam a podar peso morto de projetos JavaScript/TypeScript. depcheck foca estritamente nas dependências do package.json; Knip é mais amplo, cobrindo arquivos, exports, membros de classe e dependências não usados. Aqui está a comparação honesta.
| Knip | depcheck | |
|---|---|---|
| Escopo | Arquivos, exports, tipos, deps não usados | Deps não usadas + ausentes |
| Foco de linguagem | JS/TS (ciente de TypeScript) | JS/TS |
| Suporte a monorepo | De primeira classe (workspaces) | Limitado |
| Config | knip.json / knip.ts, muitos plugins | Config leve |
| Falsos positivos | Menos com plugins, ajustável | Mais em setups complexos |
| Manutenção | Desenvolvimento ativo | Estável, atividade mais leve |
Estreito vs amplo
depcheck responde bem a uma pergunta: quais dependências no package.json não são usadas e quais pacotes importados estão ausentes. Knip cobre isso mais arquivos e exports não usados, que é onde muito código morto de fato se esconde. Se você só se importa com a higiene de dependências, depcheck é mais simples; se quer uma varredura completa de código morto, Knip é mais completo.
Monorepos e precisão
Knip tem suporte de primeira classe a workspaces e um sistema de plugins que o ensina sobre frameworks e ferramentas (Vite, Jest, ESLint e mais), o que reduz falsos positivos. depcheck pode ter dificuldade com monorepos e imports dinâmicos. Ambos precisam de alguma configuração para não sinalizar entry points ou dependências apenas de config.
No CI
Rode qualquer um como um gate no estilo lint, para que dependências não usadas e arquivos mortos não se acumulem. Comece em um modo não bloqueante para triar o backlog inicial e, depois, aplique a regra quando a baseline estiver limpa.
O veredito
Escolha depcheck para uma verificação leve, apenas de dependências; escolha Knip para uma auditoria mais ampla de código morto com forte suporte a monorepo. Muitas equipes começam com depcheck e migram para o Knip conforme o projeto cresce.