Calculates next version, based on given commit message and following Conventional Commits
Please consider following this project's author, Charlike Mike Reagent, and ⭐️ the project to show your ❤️ and support.
If you have any how-to kind of questions, please read the Contributing Guide and Code of Conduct documents.
For bugs reports and feature requests, please create an issue or ping
@tunnckoCore at Twitter.
Project is semantically & automatically released on CircleCI with new-release and its New Release GitHub App.
Table of Contents
(TOC generated by verb using markdown-toc)
Install
This project requires Node.js ^8.10.0 || >=10.13.0. Install it using
yarn or npm.
We highly recommend to use Yarn when you think to contribute to this project.
$ yarn add detect-next-version
Monorepo support
For making it work on monorepo setups, you should pass options.packages
- an array
of package names that are changes and a options.cwd
- the root of the monorepo.
Usually this can be extracted from commit message or the response of lerna changed
.
; { // e.g. /home/charlike/develop/some-monorepo const cwd = process; // try using `git-commits-since` for getting all commits // it returns an object with `rawCommits` property const commits = 'feat: foo bar' 'chore(ok): qux okey'; const packages = '@tunnckocore/qq5' 'foo-bar-baz-qux'; const results = await ; console; const itemOne itemTwo = results; console; // => '@tunnckocore/qq5' console; // => '@tunnckocore/qq5' console; // => 'minor' console; // => '0.1.0' console; // => '0.2.0' console; // => /home/charlike/develop/some-monorepo console; // => 'foo-bar-baz-qux' console; // => 'packages/foo-bar-baz-qux' console; // => 'minor' console; // => '1.0.4' console; // => '1.1.0' console; // => /home/charlike/develop/some-monorepo} ;
API
Generated using docks.
src/index.js
detectNextVersion
Calculates next version of given package with name
,
based given commitMessages
which should follow
the Conventional Commits Specification.
Options are passed directly to @tunnckocore/package-json and
recommended-bump packages. Also because the recommended-bump, you can
pass options.plugins
which will be passed to parse-commit-message
commit message parser. So follow their docs and see the tests here for
example usage. If all commit messages are of type that is not patch|fix|minor|feat|major
or containing BREAKING CHANGE:
label (e.g. the chore
type), then the
returned result won't have nextVersion
and increment
will be false
.
ProTip: See parse-commit-message types documentation!
Params
commits
{string|} directly passed to recommended-bump May be one ofstring
,Array<string>
orArray<Commit>
[options]
{object} optional, passed to above mentioned packages.
Returns
Array<object>
an array of objects where each is basically the return of recommended-bump plus{ pkg, name, cwd, path, lastVersion, nextVersion? }
.
Examples
;
; { const commits = 'chore(ci): some build tweaks' 'fix(cli): foo bar'; // consider `my-npm-package` is version 0.1.0 const result = await ; console; // => 'patch' console; // => package's latest package.json metadata console; // => '0.1.0' console; // => '0.1.1' console; // => 'fix' console; // => 'cli' console; // => 'foobar' console; // => 'fix(cli): foobar'} ;
;; { const commitOne = ; const commitTwo = ; // always an array, but we can destruct it here, // because we know that it has only one item const result = await ; console; // => 'minor'} ;
See Also
Some of these projects are used here or were inspiration for this one, others are just related. So, thanks for your existance!
- git-commits-since: Get all commits since given period of time or by… more | homepage
- gitcommit: Lightweight and joyful
git commit
replacement. Conventional Commits compliant. | homepage - parse-commit-message: Extensible parser for git commit messages following Conventional Commits Specification | homepage
- recommended-bump: Calculates recommended bump (next semver version) based on given array… more | homepage
Contributing
Follow the Guidelines
Please read the Contributing Guide and Code of Conduct documents for advices.
For bugs reports and feature requests, please create an issue or ping
@tunnckoCore at Twitter.
Support the project
Become a Partner or Sponsor? 💵 Check the Partner, Sponsor or Omega-level tiers! 🎉 You can get your company logo, link & name on this file. It's also rendered on package page in npmjs.com and yarnpkg.com sites too! 🚀
Not financial support? Okey! Pull requests, stars and all kind of contributions are always welcome. ✨
OPEN Open Source
This project is following OPEN Open Source model
Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is built on collective efforts and it's not strongly guarded by its founders.
There are a few basic ground-rules for its contributors
- Any significant modifications must be subject to a pull request to get feedback from other contributors.
- Pull requests to get feedback are encouraged for any other trivial contributions, but are not required.
- Contributors should attempt to adhere to the prevailing code-style and development workflow.
Wonderful Contributors
Thanks to the hard work of these wonderful people this project is alive! It follows the
all-contributors specification.
Don't hesitate to add yourself to that list if you have made any contribution! ;) See how,
here.
Charlike Mike Reagent 💻 📖 💬 👀 🔍 |
---|
Consider showing your support to them. 💖
License
Copyright (c) 2017-present, Charlike Mike Reagent <mameto2011@gmail.com>
& contributors.
Released under the Apache-2.0 License.