You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

parse-commit-message

Package Overview
Dependencies
Maintainers
1
Versions
85
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

parse-commit-message

An extensible parser for commit message that follows Conventional Commits v1 spec

0.1.2
Source
npmnpm
Version published
Weekly downloads
1.3K
-24.67%
Maintainers
1
Weekly downloads
 
Created
Source

parse-commit-message npm version github release License

An extensible parser for commit message that follows Conventional Commits v1 spec

You might also be interested in hela or in the other related projects.

Quality Assurance :100:

bitHound Deps Code Style Standard Linux Build Code Coverage bitHound Score bitHound Deps Dependencies Status

If you have any how-to kind of questions, please read Code of Conduct and join the chat rooms or open an issue.
You may also read the Contributing Guide. There, beside "How to contribute?", we describe everything stated by the badges.

tunnckoCore support Code Format Prettier Node Security Status Conventional Commits Semantic Release Node Version Required Renovate App Status

Sponsor

All Contributors Spec Make A Pull Request Newsletter Subscribe PayPal Author Support Share Love Tweet NPM Downloads Weekly NPM Downloads Monthly NPM Downloads Total

Table of Contents

(TOC generated by verb using markdown-toc)

Install

This project requires Node.js v8 or above. Install it using yarn v1 or above / npm v5 or above.

$ yarn add parse-commit-message

API

Review carefully the provided examples and the working tests.

const parseCommitMessage = require('parse-commit-message');

const commitMsg1 = `feat(ng-list): Allow custom separator
bla bla bla

BREAKING CHANGE: some breaking change.
Thanks @foobar
`;

const commit = parseCommitMessage(commitMsg1);
console.log(commit);
// => { type: 'feat',
//   scope: 'ng-list',
//   subject: 'Allow custom separator',
//   header: 'feat(ng-list): Allow custom separator',
//   body: 'bla bla bla',
//   footer: 'BREAKING CHANGE: some breaking change.\nThanks @stevemao' }

It is also extensible if you pass function as second argument, so you can add more properties to the end object.

For example adding increment and mentions properties like following. Notice that the increment property here is "major" because it detects "BREAKING CHANGE:" somewhere in the commit.

That's cool and can be combined with the semver's .inc method like semver.inc('1.1.0', commit.increment)

const commit = parseCommitMessage(commitMsg1, (commit) => {
  const withIncrement = incrementMapper(commit);
  const withMentions = mentionsMapper(commit);

  return Object.assign({}, commit, withIncrement, withMentions);
});

console.log(commit);
// => { type: 'feat',
//   scope: 'ng-list',
//   subject: 'Allow custom separator',
//   header: 'feat(ng-list): Allow custom separator',
//   body: 'bla bla bla',
//   footer: 'BREAKING CHANGE: some breaking change.\nThanks @stevemao, @foobar',
//   increment: 'major',
//   isBreaking: true,
//   mentions: ['stevemao', 'foobar'] }

detects if commit is patch, minor or major type

function incrementMapper (commit) {
  const isBreaking = isBreakingChange(commit);
  let increment = null;

  if (/fix|bugfix|patch/.test(commit.type)) {
    increment = 'patch';
  }
  if (/feat|feature|minor/.test(commit.type)) {
    increment = 'minor';
  }
  if (/break|breaking|major/.test(commit.type) || isBreaking) {
    increment = 'major';
  }

  return { increment, isBreaking };
}

function isBreakingChange ({ subject, body, footer }) {
  const re = 'BREAKING CHANGE:';
  return subject.includes(re) || body.includes(re) || footer.includes(re);
}

Collects all mentions from subject, body and footer into one single array that will be added to the end "commit" object

const collectMentions = require('collect-mentions');

function mentionsMapper ({ subject, body, footer }) {
  const mentions = []
    .concat(collectMentions(subject))
    .concat(collectMentions(body))
    .concat(collectMentions(footer));

  return { mentions };
}

back to top

Some of these projects are used here or were inspiration for this one, others are just related. So, thanks for your existance!

back to top

Contributing

Please read the Contributing Guide and Code of Conduct documents for advices.
For bugs reports and feature requests, please create an issue or join us at our Flock chat rooms.

Contributors

Thanks to the hard work of these wonderful people this project is alive and it also follows the all-contributors specification.
Pull requests, stars and all kind of contributions are always welcome.

Users

You can see who uses parse-commit-message in the USERS.md file. Please feel free adding this file if it not exists.
If you or your organization are using this project, consider adding yourself to the list of users. Thank You!

License

Copyright (c) 2017-present, Charlike Mike Reagent <olsten.larck@gmail.com>.
Released under the Apache-2.0 License.

This file was generated by verb-generate-readme, v0.6.0, on November 14, 2017.
Project scaffolded and managed with hela.

Keywords

automation

FAQs

Package last updated on 14 Nov 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.