
changelog-maker
https://github.com/nodejs/changelog-maker- Category
- Developer Tools
- Rank
- No. 803Tools index
Previous survey · No. 811 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- nodejs
- GitHub
- 237 stars
- Latest release
- v5.0.4
- Date
About
Generate a clean CHANGELOG.md from your git log — the tool the Node.js core team uses for release notes.
What it does
It reads a repository’s commit history, chooses a range from tags or explicit references, and turns each commit into structured release text. It can group entries by commit-message prefix, suppress release commits, attach authors and pull requests, and enrich entries with semantic-version or vulnerability labels from GitHub.
Why it's ranked here
This is a focused release-note building block with unusually practical controls. Multiple output styles, explicit history boundaries, grouping, release-commit filtering, custom commit links, and pull-request discovery cover both routine releases and older repositories. Its conventions remain strongly shaped by Node.js and GitHub, so it fits best where those assumptions are welcome.
What's good
The tool preserves useful provenance: abbreviated commit identifiers, authors, commit links, and pull-request links. Markdown output escapes punctuation and tricky backtick cases. Semantic-version and vulnerability labels receive visible treatment. Users can process all history, select both range endpoints, reverse normal output, group conventional-style prefixes, or substitute commit-link templates for non-GitHub hosting.
Tradeoffs
GitHub enrichment requires authentication and network access, with repository scope requested by the authentication code. Pull-request discovery only considers associated merged requests returned among the first four results. Automatic repository detection depends on package metadata and otherwise assumes the Node.js repository. Output goes to standard output, so saving or merging release notes remains external workflow work.
How to use it well
Use it for projects whose commit messages carry meaningful prefixes and whose releases need traceable, human-editable notes. Pin both references in automation for repeatable ranges, request Markdown for publication, and enable pull-request discovery only when metadata is missing. Treat the result as source material for release notes. It does not decide release policy or update a release document itself.
Technical notes+
package.json defines an ES module npm package, a global-preferred changelog-maker binary backed by changelog-maker.js, and three exported library subpaths. commit-to-list.js streams git log through gitexec, split2, and commit-stream, while process-commits.js handles enrichment, grouping, formatting, reversal, quiet mode, and stdout. collect-commit-labels.js uses ghissues with an async queue of 15; find-matching-prs.js uses GitHub GraphQL with the same concurrency and selects the first merged pull request among four associated results. commit-to-output.js implements simple, plaintext, Markdown, message-only, and SHA rendering, including escaping, semver labels, CVE identifiers, reverts, and custom URL placeholders. format.js normalizes Markdown through unified and remark. test.js exercises the CLI through child processes, including ranges, grouping, filtering, escaping, pull-request matching, conventional prefixes, and CVE output.
Observed
- License
- MIT
- Primary language
- JavaScript using ES modules
- Packaging
- npm package configured with a command-line binary and global installation preference
- Install surface
- Documented global installation through npm
- Interfaces
- Command-line interface plus three exported library subpaths
- Output formats
- Simple, Markdown, plaintext, message-only, and abbreviated commit identifiers
- GitHub integration
- Authenticated issue-label lookup and optional GraphQL pull-request discovery
- Test structure
- A single top-level test.js file exercises the command-line interface with tap
Read from README.md, package.json, auth.js, test.js, format.js, groups.js, reverts.js, group-commits.js, commit-to-list.js, changelog-maker.js, process-commits.js, commit-to-output.js, find-matching-prs.js, collect-commit-labels.js, LICENSE.md.
What it can do
Generate changelog from git log
Git repository history → CHANGELOG.md file
Parse commit messages
Git commit messages → Structured changelog entries
Format release notes
Git commits and metadata → Clean formatted release notes
Extract version information
Git tags and commits → Version-organized changelog sections
Filter relevant commits
Raw git log data → Curated list of changelog-worthy commits
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.