Open source · Docs & Knowledge

Changelog Release Sync

Compare changelog versions with release tags and package metadata.

v1.0.0 · Node.js 22+ · MIT

Browse the public repository · View releases

Offline, read-only comparison of a local package version, an exported Git tag list, and changelog headings. It reports missing, mismatched, and duplicate releases without creating tags or releases. Requires Node.js 22 or newer; no package dependencies.

This walkthrough uses the tool's public README and checked-in example files. Run the command from a repository checkout with Node.js 22+; inspect the source before using it on your own files.

Run the checked-in example

node bin/changelog-release-sync.mjs --root examples/passing --package package.json --tags tags.json --changelog CHANGELOG.md
node bin/changelog-release-sync.mjs --root examples/failing --package package.json --tags tags.json --changelog CHANGELOG.md
node bin/changelog-release-sync.mjs --root examples/local --package package.json --tags tags.json --changelog CHANGELOG.md
npm run check

Read the result

The examples exit 0 (matching), 1 (tag without entry), and 0 (local unpublished, with an informational finding), respectively. --human adds a short stderr summary. --out report.json additionally writes the same JSON report within --root; stdout remains JSON. The output parent must already exist. Input and output names are relative to --root, and input realpaths must remain inside it. Output symlinks, output-parent escapes, and path or hard-link aliases to any named input are refused; refusal exits 2 with empty stdout. An ordinary existing output file may be replaced atomically. Without --out, no file is written.

Where this check stops

Each of the three files is limited to 1,048,576 bytes. At most 1,000 tag records and 1,000 release headings, JSON depth 16 (combined local JSON root depth 0), and 5,000 ms of evaluation. Each limit accepts exactly N and returns incomplete at N+1. The tool does not validate semantic release notes, inspect Git itself, resolve remote publication state, create tags/releases, or repair a changelog. A stale or incomplete tag export cannot prove repository state.

Before adapting the command to your own workflow, review the accepted inputs, exit codes and safety boundaries in the README.

Compiled with AI assistance from checked-in public documentation and example scripts. Run the example and review the repository's current documentation before relying on its result.