changelog_parser

Parses a changelog into JSON

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
changelog_parser
1.0.36 years ago6 years agoMinified + gzip package size for changelog_parser in KB

Readme

changelogparser
  • Can compile a changelog into JSON format
  • Can compile a formatted changelog string from JSON
  • Can compile a JSON formatted changelog from a string

Expects the changelog to follow keepachangelog.com guidelines

Install

npm install changelog_parser

Usage

var parser = require('changelog_parser');

// Changelog to JSON
var json_changelog = parser.toJSON(pathToChangelogFile);

// JSON formatted changelog to text
var changelog = parser.toChangelog(json_changelog);

// Changelog string to JSON
var json_changelog = parser.toJSONFromString(changelogString);

Format

This module requires the changelog to be in markdown format.
The title of the changelog is prefixed by one hashtag (#):
# Example changelog

The versions are prefixed by two hashtags (##):
## [2.9.0](http://www.google.fi/)

The change headers should be prefixed with three hashtags (###)
### Added

Individual changes should be prefixed with one hyphen (-)
- Created an amazing feature!

An example CHANGELOG.md file:
# Example changelog

## [x.y.z]

### Added
- A changelog!

### Fixed
- UI had some terrible bugs

### Removed

### Changed

## [2.9.0](http://www.google.fi/)

### Added
- Added a cool new feature
- Files can now be loaded from the Internet

### Changed
- Localization IDs

### Fixed
- This annoying bug
- That annoying bug
- A bug that you had but no one else
- A bug that everyone had but not you

### Removed
- That thing no one used until soon

## [2.8.9](http://www.google.fi/)

### Fixed
- Simple bugfix

## [2.8.8](http://www.google.fi/)

### Fixed
- Critical bug
- Not so critical bug

### Changed
- Name of bug parser

## [2.8.0](http://www.google.fi/)

### Added
- Feature 1
- Feature 2

### Fixed
- Feature X had a bug that caused more bugs
- Java internals
- JavaScript web development

### Removed
- COBOL HTML files

Parsing the example changelog will yield the following JSON:
{
  "title": "# Example changelog",
  "versions": [
    {
      "version_number": "x.y.z",
      "version": "## [x.y.z]",
      "changes": [
        {
          "change": "### Added",
          "items": [
            "- A changelog!"
          ]
        },
        {
          "change": "### Fixed",
          "items": [
            "- UI had some terrible bugs"
          ]
        },
        {
          "change": "### Removed",
          "items": []
        },
        {
          "change": "### Changed",
          "items": []
        }
      ]
    },
    {
      "version_number": "2.9.0",
      "version": "## [2.9.0](http://www.google.fi/)",
      "changes": [
        {
          "change": "### Added",
          "items": [
            "- Added a cool new feature",
            "- Files can now be loaded from the Internet"
          ]
        },
        {
          "change": "### Changed",
          "items": [
            "- Localization IDs"
          ]
        },
        {
          "change": "### Fixed",
          "items": [
            "- This annoying bug",
            "- That annoying bug",
            "- A bug that you had but no one else",
            "- A bug that everyone had but not you"
          ]
        },
        {
          "change": "### Removed",
          "items": [
            "- That thing no one used until soon"
          ]
        }
      ]
    },
    {
      "version_number": "2.8.9",
      "version": "## [2.8.9](http://www.google.fi/)",
      "changes": [
        {
          "change": "### Fixed",
          "items": [
            "- Simple bugfix"
          ]
        }
      ]
    },
    {
      "version_number": "2.8.8",
      "version": "## [2.8.8](http://www.google.fi/)",
      "changes": [
        {
          "change": "### Fixed",
          "items": [
            "- Critical bug",
            "- Not so critical bug"
          ]
        },
        {
          "change": "### Changed",
          "items": [
            "- Name of bug parser"
          ]
        }
      ]
    },
    {
      "version_number": "2.8.0",
      "version": "## [2.8.0](http://www.google.fi/)",
      "changes": [
        {
          "change": "### Added",
          "items": [
            "- Feature 1",
            "- Feature 2"
          ]
        },
        {
          "change": "### Fixed",
          "items": [
            "- Feature X had a bug that caused more bugs",
            "- Java internals",
            "- JavaScript web development"
          ]
        },
        {
          "change": "### Removed",
          "items": [
            "- COBOL HTML files"
          ]
        }
      ]
    }
  ]
}
Parsing the above JSON will result in the CHANGELOG.md file it was created from

Testing

To run all tests use the following command:
npm test

License

MIT