Home

Awesome

node-raise-version

NPM version CircleCI codecov Downloads/month License

Update and commit package version for Gitflow workflow.

Why

This package makes bumping package version according to semantic versioning easier when using Gitflow workflow just by running a single CLI command. It does the following things automatically:

All the things mentioned above are configurable. The package can also be used for centralized workflow.

Before

After

Installation

npm install raise-version --save-dev

or

yarn add raise-version --dev

CLI usage

  1. Initialize raise-version from the root directory of your project (optional — if missed then default configuration will be used):

    • if installed globally:

      raise-version init
      
    • if installed locally:

      npx raise-version init
      

    .raiseverrc configuration file will be created.

    raisever is an alias for raise-version CLI command.

  2. Adjust configuration parameters in .raiseverrc, these are default values:

    {
      "changelog": {
        "enabled": true,
        "path": "CHANGELOG.md",
        "encoding": "utf-8",
        "prefix": "##",
        "bullet": "-"
      },
      "git": {
        "enabled": true,
        "release": "master",
        "development": "develop",
        "remote": "origin",
        "commit": true,
        "merge": true,
        "all": false,
        "tag": true,
        "push": false
      }
    }
    

    They correspond to options of console command:

    • -l, --changelog Update version in changelog file [boolean] [default: true]
    • -f, --changelog-path Path to changelog file [string] [default: "CHANGELOG.md"]
    • -e, --changelog-encoding Encoding of changelog file [string] [default: "utf-8"]
    • -h, --changelog-prefix Prefix for version header in changelog file [string] [default: "##"]
    • -b, --changelog-bullet Bullet character for changes' item in changelog file [string] [default: "-"]
    • -g, --git Commit updates to git [boolean] [default: true]
    • -r, --git-release Git release branch [string] [default: "master"]
    • -d, --git-development Git development branch [string] [default: "develop"]
    • -o, --git-remote Git remote repository name [string] [default: "origin"]
    • -c, --git-commit Commit changes to development branch [boolean] [default: true]
    • -m, --git-merge Merge changes to release branch [boolean] [default: true]
    • -a, --git-all Commit all changes [boolean] [default: false]
    • -t, --git-tag Create git tag [boolean] [default: true]
    • -p, --git-push Push git changes to remote repository [boolean] [default: false]

    More CLI options:

    -s, --skip-update Don't update package.json file

    In order to use raise-version with centralized workflow just set a value of development branch equal to release branch (master). git.merge parameter and --git-merge CLI option make no sense in this case.

  3. Make changes to your source code, describe them in changelog file (if used) and raise a version:

    raise-version [release] [options]
    
    • release — semver part to update, one of the following: major, minor, patch;
    • options — CLI options overwriting configuration from .raiseverrc.

Examples

Basic usage examples used below considers that .raiseverrc has default configuration (or not created):

  1. The same as previous but also push commits to remote repository:

    raise-version patch --git-push
    
  2. Don't update version in package.json and CHANGELOG.md, don't commit but merge from development branch to release branch and push changes to remote repository:

    raise-version --skip-update --changelog=false --git-commit=false --git-push
    
  3. Don't update, don't commit and don't merge anything, just push to remote repository only:

    raise-version --skip-update --changelog=false --git-commit=false --git-merge=false --git-push
    

Programmatic usage

const raiseVersion = require('raise-version');
raiseVersion({
  release: 'patch',
  git: {
    push: true
  }
}).catch(function(e) {
  console.error('Something went wrong');
});