Skip to content

A Node.js executable package determining semantic version bumps based on the conventional commits spec

License

Notifications You must be signed in to change notification settings

TomerFi/version-bumper

Repository files navigation

Version Bumper
docker-version-badge npm-version-badge

A Node.js executable package determining semantic version bumps based on the conventional commits spec.

See also version-bumper-action GitHub action.

Upgrading from version 2 to 3? Click here.

Version 3 introduced breaking changes

  • The output was changed from a space-delimited text to a JSON object:
    • old 2.1.5 2.1.6-dev
    • new{"current":"2.1.4","bump":"patch","next":"2.1.5","dev":"2.1.6-dev"}

  • Changes in the option flags:
    • --changelog was removed. Creating a changelog file is no longer supported.
    • --outputtype was removed. Output to file is no longer supported.
    • --preset was removed. Selecting a preset is no longer supported.
    • --repopath was changed to --repo (repopath will eventually be removed).
    • --bumpoverride was changed to --bump (bumpoverride will eventually be removed).
    For more info, run the tool with the -h flag (--help).

  • Changes in the container image mount target:
    • from /usr/share/repo
    • to /repo
# old v2 run command
docker run --rm -v $PWD:/usr/share/repo tomerfi/version-bumper:latest --repopath /path/to/git --bumpoverride major
# new v3 run command
docker run --rm -v $PWD:/repo tomerfi/version-bumper:latest --repo /path/to/git --bump major

Usage

The version-bumper tool is executed using npx or consumed as a standard package.
We also push a container image encapsulating the executable package to docker hub.

Automatic Bumps

The following examples assume:

  • The current working directory is a git repository.
  • The latest semver tag is 2.1.4.
  • Commit messages are based on the conventional commits spec.
$ npx @tomerfi/version-bumper@latest

$ docker run --rm -v $PWD:/repo tomerfi/version-bumper:latest
podman users? Click here.
$ podman run --privileged --rm -v $PWD:/repo:ro docker.io/tomerfi/version-bumper:latest

For commits with a fix type, the output of the above commands will be:

{"current":"2.1.4","bump":"patch","next":"2.1.5","dev":"2.1.6-dev"}

For commits with a feat type, the output of the above commands will be:

{"current":"2.1.4","bump":"minor","next":"2.2.0","dev":"2.2.1-dev"}

For commits containing the text BREAKING CHANGE in their body, the output of the above commands will be:

{"current":"2.1.4","bump":"major","next":"3.0.0","dev":"3.0.1-dev"}

Manual Bumps

Occasionally, we may want to use this only for bumps; no git repository is required.

$ npx @tomerfi/version-bumper@latest -s 2.1.4 -b patch

$ docker run --rm tomerfi/version-bumper:latest -s 2.1.4 -b patch

{"current":"2.1.4","bump":"patch","next":"2.1.5","dev":"2.1.6-dev"}
$ npx @tomerfi/version-bumper@latest -s 2.1.4 -b minor

$ docker run --rm tomerfi/version-bumper:latest -s 2.1.4 -b minor

{"current":"2.1.4","bump":"minor","next":"2.2.0","dev":"2.2.1-dev"}
$ npx @tomerfi/version-bumper@latest -s 2.1.4 -b major

$ docker run --rm tomerfi/version-bumper:latest -s 2.1.4 -b major

{"current":"2.1.4","bump":"major","next":"3.0.0","dev":"3.0.1-dev"}

ES Module

import { bumper } from '@tomerfi/version-bumper'

// prints { current: '2.1.4', bump: 'patch', next: '2.1.5', dev: '2.1.5-dev' }
bumper({source: "2.1.4", bump: 'patch'}).then(bump => console.log(bump))

// prints { current: '2.1.4', bump: 'minor', next: '2.2.0', dev: '2.2.1-dev' }
bumper({source: "2.1.4", bump: 'minor'}).then(bump => console.log(bump))

// prints { current: '2.1.4', bump: 'major', next: '3.0.0', dev: '3.0.1-alpha1' }
bumper({source: "2.1.4", bump: 'minor', label: '-alpha1'}).then(bump => console.log(bump))