ForHosting KIT · Ferramentas para dev

Diff de dependências package.json

Compare duas listas de dependências do package.json e veja o que mudou de fato: react passa de ^17.0.2 para ^18.2.0, axios entra, moment sai e lodash continua igual. Formatação e ordem das chaves não contam. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve

Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.

Comparar blocos de dependências entre dois snapshots de package.json é uma tarefa diária em revisões de release, upgrades e auditorias de pull request. Um diff de texto ou de linhas mistura ruído de formatação, ordem de chaves e campos irrelevantes com o sinal que importa: quais pacotes surgiram, quais saíram e quais faixas de versão se moveram. Este diff de dependências do package.json aceita dois objetos simples —cada um um mapa de nome de pacote para string de faixa de versão, exatamente como em dependencies, devDependencies, peerDependencies ou optionalDependencies— e devolve listas estruturadas de pacotes adicionados, removidos e alterados, mais entradas inalteradas e contagens.

O que um diff semântico de dependências reporta

Um diff semântico de dependências trata cada nome de pacote como elemento de um conjunto e cada campo de versão como rótulo de string ligado a esse nome. Qualquer nome presente só em after é reportado em added com a nova faixa de versão. Qualquer nome presente só em before é reportado em removed com a versão que tinha.

Nomes presentes em ambos os mapas com strings de versão diferentes aparecem em changed com campos from e to. Nomes com strings idênticas aparecem em unchanged para que voce inventarie a parte estável da superfície declarada. Contagens de cada grupo e totais dos dois mapas permitem dashboards exibirem badges sem recontar arrays.

A comparação é intencionalmente rasa: não expande faixas com caret, não resolve o registro npm nem avalia se ^17.0.0 e 17.0.2 instalariam a mesma árvore. Isso mantém a ferramenta determinística, offline e adequada a gates de CI que só precisam saber se o objeto de dependências declarado se moveu.

Onde um diff de dependências do package.json se paga

Gestores de release congelam um objeto de dependências conhecido como bom antes de uma onda de upgrades e reexecutam o diff após lotes do Dependabot ou Renovate para confirmar o conjunto pretendido de bumps. Pipelines de revisão de segurança combinam esta saída estruturada com consultas de avisos: só a união de nomes adicionados e alterados precisa de varredura CVE quando o resto da árvore não mudou.

Mantenha mapas modestos, fixe os arrays ordenados nos testes e voce obtém relatórios reproduzíveis de mudanças de dependências para CI, code review e checklists de migração sem montar um analisador completo de lockfile.

Resumos de dependências em pull requests

Compare os objetos de dependências de package.json de base e head e publique no PR só os pacotes adicionados, removidos ou com versão alterada.

Revisão de lotes de upgrade e Renovate

Compare o mapa de dependências antes e depois de um lote de upgrade automático para verificar os bumps pretendidos e detectar remoções inesperadas.

Listas focadas de reescaneamento de segurança

Alimente scanners de avisos com os nomes de pacotes adicionados e alterados para não rechecar a cada commit os pacotes inalterados.

Isto resolve faixas semver contra o registro?

Não. As especificações de versão são comparadas como strings exatas. ^1.0.0 e 1.0.0 são tratados como mudança mesmo que ambos pudessem instalar o mesmo release.

Posso enviar devDependencies ou peerDependencies?

Sim. Qualquer mapa nome→versão funciona — dependencies, devDependencies, peerDependencies, optionalDependencies ou um objeto mesclado que voce mesmo monte.

Por que não comparar os arquivos linha por linha?

Um diff de linhas mistura o ruído da formatação, da ordem das chaves e de outros trechos com o que importa. Aqui cada nome de pacote é comparado com o seu texto de versão, então você só vê os pacotes que entraram, saíram ou mudaram de versão.

Os pacotes sem mudança também aparecem?

Sim. Pacotes com o mesmo texto de versão ficam numa lista própria, para você inventariar a parte estável. Todas as listas saem em ordem alfabética e com a respectiva contagem.

Como isso ajuda numa revisão de segurança?

Quando quase toda a árvore continua igual, só os pacotes adicionados e os que mudaram de versão precisam de nova consulta de alertas. Passe esses nomes ao seu scanner em vez de verificar todos os pacotes a cada commit.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/dev/semantic-diff-package-json

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev/semantic-diff-package-json \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"before":{"react":"^17.0.2","lodash":"^4.17.21","moment":"^2.29.4"},"after":{"react":"^18.2.0","lodash":"^4.17.21","axios":"^1.6.0"}}'
{
  "before": {
    "react": "^17.0.2",
    "lodash": "^4.17.21",
    "moment": "^2.29.4"
  },
  "after": {
    "react": "^18.2.0",
    "lodash": "^4.17.21",
    "axios": "^1.6.0"
  }
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.semantic_diff_package_json",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Entradas que não são objetos falham com invalid_input e não são cobradas.

O que um diff semântico de dependências reporta

O mapa de referência é before; o mapa candidato é after. Cole dependencies, devDependencies ou uma visão mesclada que voce mesmo montou — o endpoint só precisa de dois objetos com especificações de versão em string.

Contrato de entrada, formato da resposta e erros

Cada um deve ser um objeto simples, não um array, não null e não um primitivo. Nomes de pacote viram chaves do objeto; faixas de versão devem ser strings ou escalares simples que se convertam limpos em string — objetos aninhados como valor de versão são rejeitados. Objetos vazios são válidos e significam um conjunto vazio de dependências. Em sucesso o corpo inclui arrays added, removed, changed e unchanged ordenados alfabeticamente por nome de pacote; cada item adicionado ou removido tem name e version, cada alterado tem name, from e to, e cada inalterado tem name e version. Envie um corpo JSON com dois campos objeto obrigatórios: before (aliases left, old, previous) e after (aliases right, new, next). Contadores numéricos added_count, removed_count, changed_count, unchanged_count, total_before e total_after espelham os arrays. O booleano has_changes é true quando algum pacote foi adicionado, removido ou teve versão alterada. Se before ou after estiver ausente, for um array, uma string ou de outro modo não for objeto, a tarefa falha com invalid_input nomeando o campo; essas falhas não consomem saldo. Exemplo: before com react ^17.0.2, lodash ^4.17.21, moment ^2.29.4 versus after com react ^18.2.0, lodash ^4.17.21, axios ^1.6.0 produz moment removido, axios adicionado, react alterado de ^17.0.2 para ^18.2.0, e lodash inalterado.

Onde um diff de dependências do package.json se paga

Bots de pull request podem extrair dependências dos arquivos package.json de base e head, chamar este endpoint e publicar um comentário curto listando só movimentos reais de pacotes em vez de um diff unificado ruidoso. Como a implementação é parse puro de nível A, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída.

Como faço o diff de dois objetos de dependências do package.json?

Envie before e after como objetos simples mapeando nomes de pacote para strings de faixa de versão. A API devolve listas ordenadas added, removed, changed e unchanged mais contagens.

O que acontece se before ou after não for um objeto?

A tarefa falha com invalid_input. Arrays, null, strings e campos ausentes são rejeitados e não são cobrados.

Quanto custa o diff de dependências do package.json?

A ferramenta do navegador é gratuita. Pedidos de API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →