ForHosting KIT · Strumenti per sviluppatori

Diff dipendenze package.json

Confronti due elenchi di dipendenze di package.json e veda cosa è cambiato davvero: react passa da ^17.0.2 a ^18.2.0, entra axios, esce moment e lodash resta uguale. Formattazione e ordine delle chiavi non contano. Gratis nel suo browser.

  • Gratis
  • Funziona nel suo browser
  • Senza registrazione
  • I suoi dati restano sul dispositivo
Usalo da WebAPIEmailTelegramApp presto

Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.

Confrontare i blocchi di dipendenze tra due istantanee di package.json è un'attività quotidiana nelle revisioni di release, negli upgrade e negli audit delle pull request. Un diff di testo o di righe mescola rumore di formattazione, ordine delle chiavi e campi estranei con il segnale che conta: quali pacchetti sono comparsi, quali sono usciti e quali intervalli di versione si sono mossi. Questo diff delle dipendenze di package.json accetta due oggetti semplici — ciascuno una mappa da nome pacchetto a stringa di intervallo di versione, esattamente come in dependencies, devDependencies, peerDependencies o optionalDependencies — e restituisce elenchi strutturati di pacchetti aggiunti, rimossi e modificati, più le voci invariate e i conteggi.

Cosa segnala un diff semantico delle dipendenze

Un diff semantico delle dipendenze tratta ogni nome di pacchetto come elemento di un insieme e ogni campo versione come etichetta stringa legata a quel nome. Qualsiasi nome presente solo in after è segnalato in added con il nuovo intervallo di versione. Qualsiasi nome presente solo in before è segnalato in removed con la versione che aveva.

I nomi presenti in entrambe le mappe con stringhe di versione diverse compaiono in changed con i campi from e to. I nomi con stringhe identiche compaiono in unchanged così Lei può inventariare la parte stabile della superficie dichiarata. I conteggi di ciascun gruppo e i totali di entrambe le mappe consentono ai dashboard di mostrare badge senza ricontare gli array.

Il confronto è volutamente superficiale: non espande gli intervalli con caret, non risolve il registro npm e non valuta se ^17.0.0 e 17.0.2 installerebbero lo stesso albero. Così lo strumento resta deterministico, offline e adatto a gate CI che devono solo sapere se l'oggetto dipendenze dichiarato si è mosso.

Dove un diff delle dipendenze di package.json conviene

I responsabili di release congelano un oggetto di dipendenze noto come buono prima di un'onda di upgrade e rieseguono il diff dopo batch di Dependabot o Renovate per confermare l'insieme previsto di bump. Le pipeline di revisione di sicurezza abbinano questa uscita strutturata alle ricerche di advisory: solo l'unione dei nomi aggiunti e modificati necessita di scansione CVE quando il resto dell'albero è invariato.

Mantenga mappe modeste, fissi gli array ordinati nei test e otterrà report riproducibili di modifiche alle dipendenze per CI, code review e checklist di migrazione senza erigere un analizzatore completo di lockfile.

Riepiloghi delle dipendenze nelle pull request

Confronti gli oggetti di dipendenze di package.json di base e head e pubblichi sulla PR solo i pacchetti aggiunti, rimossi o con versione cambiata.

Revisione di batch di upgrade e Renovate

Confronti la mappa delle dipendenze prima e dopo un batch di upgrade automatico per verificare i bump previsti e individuare rimozioni a sorpresa.

Elenchi mirati di riscansione di sicurezza

Fornisca agli scanner di advisory i nomi dei pacchetti aggiunti e modificati così i pacchetti invariati non vengono ricontrollati a ogni commit.

Risolve gli intervalli semver contro il registro?

No. Le specifiche di versione sono confrontate come stringhe esatte. ^1.0.0 e 1.0.0 sono trattati come un cambiamento anche se entrambi potessero installare lo stesso release.

Posso passare devDependencies o peerDependencies?

Sì. Qualsiasi mappa nome→versione funziona — dependencies, devDependencies, peerDependencies, optionalDependencies o un oggetto unito che Lei costruisce.

Perché non confrontare i file riga per riga?

Un diff di righe mescola il rumore della formattazione, dell'ordine delle chiavi e di altre sezioni con ciò che conta. Qui ogni nome di pacchetto è confrontato con il suo testo di versione, così vede solo i pacchetti entrati, usciti o cambiati di versione.

Compaiono anche i pacchetti invariati?

Sì. I pacchetti con lo stesso testo di versione finiscono in un elenco a parte, così può inventariare la parte stabile. Tutti gli elenchi sono in ordine alfabetico e riportano il proprio conteggio.

Come aiuta in una revisione di sicurezza?

Quando quasi tutto l'albero resta uguale, solo i pacchetti aggiunti e quelli con versione cambiata richiedono un nuovo controllo degli avvisi. Passi questi nomi al suo scanner invece di ricontrollare ogni pacchetto a ogni commit.

Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.

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

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

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"
  }
}

L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Gli input che non sono oggetti falliscono con invalid_input e non vengono addebitati.

Cosa segnala un diff semantico delle dipendenze

La mappa di base è before; la mappa candidata è after. Incolli dependencies, devDependencies o una vista unita costruita da Lei: l'endpoint richiede solo due oggetti di specifiche di versione in stringa.

Contratto di ingresso, forma della risposta ed errori

Ciascuno deve essere un oggetto semplice, non un array, non null e non un primitivo. I nomi pacchetto diventano chiavi dell'oggetto; gli intervalli di versione devono essere stringhe o scalari semplici che si convertano pulitamente in stringa — gli oggetti annidati come valore di versione sono rifiutati. Gli oggetti vuoti sono validi e significano un insieme vuoto di dipendenze. In caso di successo il corpo include gli array added, removed, changed e unchanged ordinati alfabeticamente per nome pacchetto; ogni elemento aggiunto o rimosso ha name e version, ogni modificato ha name, from e to, e ogni invariato ha name e version. Invii un corpo JSON con due campi oggetto obbligatori: before (alias left, old, previous) e after (alias right, new, next). I contatori numerici added_count, removed_count, changed_count, unchanged_count, total_before e total_after rispecchiano gli array. Il booleano has_changes è true quando un pacchetto è stato aggiunto, rimosso o ha cambiato versione. Se before o after manca, è un array, una stringa o altrimenti non un oggetto, l'attività fallisce con invalid_input indicando il campo; tali fallimenti non consumano saldo. Esempio: before con react ^17.0.2, lodash ^4.17.21, moment ^2.29.4 contro after con react ^18.2.0, lodash ^4.17.21, axios ^1.6.0 produce moment rimosso, axios aggiunto, react cambiato da ^17.0.2 a ^18.2.0, e lodash invariato.

Dove un diff delle dipendenze di package.json conviene

I bot delle pull request possono estrarre le dipendenze dai file package.json di base e head, chiamare questo endpoint e pubblicare un breve commento che elenca solo i veri movimenti di pacchetti invece di un diff unificato rumoroso. Poiché l'implementazione è parse puro di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello e senza rete in uscita.

Come si confrontano due oggetti di dipendenze di package.json?

Invii before e after come oggetti semplici che mappano nomi di pacchetto a stringhe di intervallo di versione. L'API restituisce elenchi ordinati added, removed, changed e unchanged più i conteggi.

Cosa succede se before o after non è un oggetto?

L'attività fallisce con invalid_input. Array, null, stringhe e campi mancanti sono rifiutati e non addebitati.

Quanto costa il diff delle dipendenze di package.json?

Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l'input non valido non viene addebitato.

Leggi la documentazione completa del KIT →