Command line tool (and Node module) that generates a changelog in color output, markdown, or json for modules in's registry as well as any public repo.


Command line tool (and Node module) that generates a changelog in color output, markdown, or json for modules in's registry as well as any public repo.

Modules do not need to be installed to generate changelog but they must define their repository url in their package.json.

$ changelog {npm module name} [release] [options]

npm module: The module name, such as express, npm, grunt, etc.

Changelog also works on any public Github repo.

$ changelog { repo} [options] repo url: Urls can be any format, such as or or even just dylang/changelog.

changelog --help

  changelog <npm module name> [versions] [options]
  changelog <github repo url> [versions] [options]
Module name:
   $ changelog npm
Github repo:
   $ changelog
   $ changelog isaacs/npm
   latest   Default: Show only the latest versions. ex: $ changelog npm latest
   all      Show all versions.                      ex: $ changelog npm all
   number   Show that many recent versions.         ex: $ changelog npm 3
   n.n.n    Show changes for a specific version.    ex: $ changelog npm 1.3.11
  -c, --color            Output as Color (terminal default)
  -m, --markdown         Output as Github-flavored Markdown (file default)
  -j, --json             Output as JSON
  -d, --debug            Enable debugging
  -h, --help             Display help and usage details

Changelog can be easily integrated into other tools.

  • name string, required NPM module name from registry.
  • versions integer or semver, optional Number of versions, or the semver version to show.
var changelog = require('changelog');
changelog.generate(NpmPackageName, countOrVersions)
var changelog = require('changelog');
function showChanges(data) {
    //With npm each "version" corresponds to all changes for that build pushed on npm 
    //With github each "version" is one GMT day of changes 
    data.versions.forEach(function(version) {
        console.log(version.version); //currently npm projects only 
        console.log(;    //JS Date 
        //version.changes is an array of commit messages for that version 
        version.changes.forEach(function(change) {
            console.log(' * ' + change);
    //Information about the project 
  • Changelog uses API to get the list of versions and the publish dates.
  • It cross-references the versions in npm with the commit history from the Github's API.

Dylan Greene built this because he was always curious what was changed when doing npm update. This module's name is inspired by listening to TheChangelog Podcast on the way to work.

Hello fellow developer! My name is Dylan Greene. When not overwhelmed with my two kids I enjoy contributing to the open source community. I'm a tech lead at Opower. I lead a team using Grunt and Angular to build software that successfully helps people like us use less power. Not too long ago I co-created Doodle or Die, a hilarious web game with millions of doodles that won us Node Knockout for the "most fun" category. I'm dylang on Twitter and other places.

Some of my other Node projects:

NameDescriptionGithub StarsNpm Installs
grunt-notifyAutomatic desktop notifications for Grunt errors and warnings using Growl for OS X or Windows, Mountain Lion and Mavericks Notification Center, and Notify-Send.79836,294
grunt-promptInteractive prompt for your Grunt config using console checkboxes, text input with filtering, password fields.2445,804
shortidAmazingly short non-sequential url-friendly unique id generator.2628,357
rssRSS feed generator. A really simple API to add RSS feeds to any project.24315,147
npm-checkCheck for outdated, incorrect, and unused dependencies.New!1,164
xmlFast and simple xml generator. Supports attributes, CDATA, etc. Includes tests and examples.5621,139
loggingSuper sexy color console logging with cluster support.24541
grunt-attentionDisplay attention-grabbing messages in the terminalNew!6,253
observatoryBeautiful UI for showing tasks running on the command line.313,516
flowdock-refinedFlowdock desktop app custom UINew!59
anthologyModule information and stats for any @npmjs userNew!216
grunt-catEcho a file to the terminal. Works with text, figlets, ascii art, and full-color ansi.New!102

This list was generated using anthology.

Copyright (c) 2014 undefined, contributors.

Released under the MIT license.

Screenshots are CC BY-SA (Attribution-ShareAlike).

Generated using grunt-readme with grunt-templates-dylang on Monday, October 6, 2014.