Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/JS-DevTools/version-bump-prompt

Interactive CLI that bumps your version numbers and more
https://github.com/JS-DevTools/version-bump-prompt

cli javascript nodejs semantic-versioning semver version versioning

Last synced: 3 months ago
JSON representation

Interactive CLI that bumps your version numbers and more

Awesome Lists containing this project

README

        

# Version Bump Prompt

[![Cross-Platform Compatibility](https://jstools.dev/img/badges/os-badges.svg)](https://github.com/JS-DevTools/version-bump-prompt/actions)
[![Build Status](https://github.com/JS-DevTools/version-bump-prompt/workflows/CI-CD/badge.svg)](https://github.com/JS-DevTools/version-bump-prompt/actions)

[![Coverage Status](https://coveralls.io/repos/github/JS-DevTools/version-bump-prompt/badge.svg?branch=master)](https://coveralls.io/github/JS-DevTools/version-bump-prompt)
[![Dependencies](https://david-dm.org/JS-DevTools/version-bump-prompt.svg)](https://david-dm.org/JS-DevTools/version-bump-prompt)

[![npm](https://img.shields.io/npm/v/@jsdevtools/version-bump-prompt.svg)](https://www.npmjs.com/package/@jsdevtools/version-bump-prompt)
[![License](https://img.shields.io/npm/l/@jsdevtools/version-bump-prompt.svg)](LICENSE)
[![Buy us a tree](https://img.shields.io/badge/Treeware-%F0%9F%8C%B3-lightgreen)](https://plant.treeware.earth/JS-DevTools/version-bump-prompt)

![Screenshot](https://jstools.dev/version-bump-prompt/img/screenshot.gif)

### Automate your release process with a single command that can:

- Prompt for the type of version bump

- Bump the version number **any** file, including:
- `package.json`
- `package-lock.json`
- config files
- source code files
- ReadMe files
- license files

- Run your `preversion`, `version`, and `postversion` scripts

- Commit changes to git

- Tag the commit with the version number

- Push the commit to remote

Installation
--------------------------
You can install `version-bump-prompt` via [npm](https://docs.npmjs.com/about-npm/).

```bash
npm install -g @jsdevtools/version-bump-prompt
```

Usage
--------------------------

```
bump [release] [options] [files...]

Automatically (or with prompts) bump your version number, commit changes, tag, and push to Git

release:
The release version or type. Can be one of the following:
- A semver version number (ex: 1.23.456)
- prompt: Prompt for the version number (this is the default)
- major: Increase major version
- minor: Increase minor version
- patch: Increase patch version
- premajor: Increase major version, pre-release
- preminor: Increase preminor version, pre-release
- prepatch: Increase prepatch version, pre-release
- prerelease: Increase prerelease version

options:
--preid The identifier for prerelease versions.
Defaults to "beta".

-c, --commit [message] Commit changed files to Git.
Defaults to "release vX.X.X".

-t, --tag [tag] Tag the commit in Git.
The Default tag is "vX.X.X"

-p, --push Push the Git commit.

-a, --all Commit/tag/push ALL pending files,
not just the ones that were bumped.
(same as "git commit -a")

--no-verify Bypass Git commit hooks
(same as "git commit --no-verify")

-v, --version Show the version number

-q, --quiet Suppress unnecessary output

-h, --help Show usage information

--ignore-scripts Bypass version scripts

files...
One or more files and/or globs to bump (ex: README.md *.txt docs/**/*).
Defaults to package.json and package-lock.json.
```

Examples
--------------------------

### Default Behavior (no arguments)

```
bump
```

When run without any arguments, the `bump` command will do the following:

- Prompt the user to select the bump type (major, minor, prerelease, etc.)
- Update the version number in `package.json` and `package-lock.json`
- Run any [npm version scripts](https://docs.npmjs.com/cli/version.html) (`preversion`, `version`, or `postversion`)
- It will **NOT** commit, tag, or push to git.

### Bump Without Prompting
You can specify an explicit version number:

```
bump 1.23.456
bump 1.23.456-beta.1
```

Or you can specify a release type:

```
bump major
bump patch
bump prerelease
```

For pre-releases, the default identifier is "beta". You can change it using the `--preid` argument:

```
bump premajor --preid alpha
```

All of the above commands do the following:

- Update the version number in `package.json` and `package-lock.json`
- Run any [npm version scripts](https://docs.npmjs.com/cli/version.html) (`preversion`, `version`, or `postversion`)
- It will **NOT** commit, tag, or push to git.

### Git Commit
You can use the `--commit` argument by itself to prompt the user for the version number. If you don't specify a commit message, then it defaults to "**release vX.X.X**". If you _do_ specify a commit message, then the version number will be appended to it. Or you can insert `%s` placeholders in the message, and they'll be replaced with the version number instead.

```
bump --commit
bump --commit "This is release v"
bump --commit "The v%s release"
```

You can also specify a release type instead of prompting the user:

```
bump major --commit
bump minor --commit "This is release v"
bump patch --commit "The v%s release"
```

The above commands do the following:

- Update the version number in `package.json` and `package-lock.json`
- Run any [npm version scripts](https://docs.npmjs.com/cli/version.html) (`preversion`, `version`, or `postversion`)
- Commit the `package.json` and `package-lock.json` files to git
- The commit will **NOT** be tagged
- The commit will **NOT** be pushed to the remote

### Git Tag
The `--commit` argument does not tag the commit by default. You can use the `--tag` argument to do that. You can optionally specify a tag name, which can contain `%s` placeholders, just like the commit message.

You don't need to specify the `--commit` argument, since it's implied by `--tag`. Unless you want to customize the commit message.

```
bump --tag
bump major --tag "v%s tag"
bump patch --commit "release v" --tag "v"
```

The above commands do the following:

- Update the version number in `package.json` and `package-lock.json`
- Run any [npm version scripts](https://docs.npmjs.com/cli/version.html) (`preversion`, `version`, or `postversion`)
- Commit the `package.json` and `package-lock.json` files to git
- Tag the commit
- The commit will **NOT** be pushed to the remote

### Git Push
The `--push` argument pushes the git commit and tags.

```
bump --commit --push
bump major --tag --push
bump patch --tag "v%s tag" --push
bump prerelease --commit "release v" --tag "v" --push
```

### Specifying Files to Update
All of the `bump` commands shown above operate on the `package.json` and `package-lock.json` files by default. You can specify a custom list of files and/or [glob patterns](https://www.npmjs.com/package/glob#glob-primer) to update instead.

> **Note:** If you specify your own file list, then the `package.json` and `package-lock.json` files will **not** be updated by default. You need to explicitly include them in your file list if you want them updated.

```
bump README.md
bump package.json package-lock.json README.md
bump *.json *.md
```

Version Scripts
--------------------------
`version-bump-prompt` will execute your `preversion`, `version`, and `postversion` scripts, just like [the `npm version` command](https://docs.npmjs.com/cli/version) does. If your `package.json` file contains any or all of these scripts, then they will be executed in the following order:

- The `preversion` script runs before the version is updated (and before the version prompt is shown)
- The `version` script runs after the version is updated, but _before_ `git commit` and `git tag`
- The `postversion` script runs after `git commit` and `git tag`, but _before_ `git push`

Contributing
--------------------------
Contributions, enhancements, and bug-fixes are welcome! [Open an issue](https://github.com/JS-DevTools/version-bump-prompt/issues) on GitHub and [submit a pull request](https://github.com/JS-DevTools/version-bump-prompt/pulls).

#### Building
To build the project locally on your computer:

1. __Clone this repo__

`git clone https://github.com/JS-DevTools/version-bump-prompt.git`

2. __Install dependencies__

`npm install`

3. __Build the code__

`npm run build`

4. __Run the tests__

`npm test`

License
--------------------------
Version Bump Prompt is 100% free and open-source, under the [MIT license](LICENSE). Use it however you want.

This package is [Treeware](http://treeware.earth). If you use it in production, then we ask that you [**buy the world a tree**](https://plant.treeware.earth/JS-DevTools/version-bump-prompt) to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.

Big Thanks To
--------------------------
Thanks to these awesome companies for their support of Open Source developers ❤

[![GitHub](https://jstools.dev/img/badges/github.svg)](https://github.com/open-source)
[![NPM](https://jstools.dev/img/badges/npm.svg)](https://www.npmjs.com/)
[![Coveralls](https://jstools.dev/img/badges/coveralls.svg)](https://coveralls.io)
[![Travis CI](https://jstools.dev/img/badges/travis-ci.svg)](https://travis-ci.com)
[![SauceLabs](https://jstools.dev/img/badges/sauce-labs.svg)](https://saucelabs.com)