Compare two JSON documents by what they hold rather than how they are written, and get every added, removed and changed path.
version
1.4.0 → 1.5.0
engines.node
>=20 → >=22
engines.bun
>=1.1 → >=1.2
engines.deno
added: >=2
keywords[3]
added: oklch
~ version: 1.4.0 -> 1.5.0 ~ engines.node: >=20 -> >=22 ~ engines.bun: >=1.1 -> >=1.2 + engines.deno: >=2 + keywords[3]: oklch
A text diff reports a reordered key or a reindented file as a change to every line. This one walks the structure, so only a real difference in the data is reported.
By position, because an array is a sequence. Moving an item is reported as two changes, which is honest: for most APIs the order is part of the meaning.
Strict JSON or the JavaScript dialect: unquoted keys, single quotes, trailing commas and comments all read fine, so a console log works as well as a file.