Copyright 2019-2025 Caleb Evans
Released under the MIT license
Bump Anything is a command-line utility for incrementing the version It serves
as a more-flexible alternative to npm version and similar tools because
Bump Anything can handle any arbitrary text file and has built-in support for
different types of projects.
- Bump the version number in any arbitrary file
- Supports most project types (if no paths are supplied, automatically detects
package.jsonin Node,setup.pyorpyproject.tomlin Python,style.cssfor WordPress themes, etc.)
Bump Anything requires Python 3.9 or newer to run, so please ensure you have it installed. You can install it easily via pip, or using your preferred package manager (like uv):
# via pip
pip3 install bump-anything# via uv
uv tool install bump-anythingBump Anything exposes to your shell a bump-anything command (also aliased to
bump). The only required argument is a keyword indicating how you want to
increment each version. It can be either major, minor, or patch.
bump major # 1.2.3 -> 2.0.0bump minor # 1.2.3 -> 1.3.0bump patch # 1.2.3 -> 1.2.4bump prerelease # 1.2.3-beta.1 -> 1.2.3-beta.2bump 2.3.4bump v2.3.4 # same as `bump 2.3.4`With this syntax, Bump Anything will do its best to find the relevant files to bump. However, Bump Anything can also accept an optional list of one or more file paths whose versions to bump. Only the first occurrence of the version field in each file will be updated.
bump minor subdir/myfile1.json subdir/myfile2.tomlThe bump command will automatically create a tagged commit if the current
directory is a Git repository. Only the files that have been modified by bump
will be staged.
You can explicitly specify the commit message with --commit-message or -m.
The default is Prepare v<new_version> release. You can use the {new_version}
placeholder to represent the new version (without any prefix).
bump --commit-message 'Release v{new_version}' majorbump -m 'Release v{new_version}' majorYou can explicitly specify the tag name with --tag-name or -t (default:
v<new_version>). You can use the {new_version} placeholder to represent the
new version (without any prefix).
bump --tag-name 'release/{new_version}' patchbump -t 'release/{new_version}' patchIf you do not wish for bump to automatically create a commit and tag, you can
pass the --no-commit flag (alias: -n):
bump --no-commit minorbump -n minorIf you wish to disable the automatic tag creation but still create a commit, you
can pass the --no-tag flag:
bump --no-tag patchpackage.json(Node)package-lock.json(Node)setup.py(Python)setup.cfg(Python)pyproject.toml(Python)style.css(WordPress Theme)Cargo.toml(Rust package manifest)<cwd name>.php(WordPress Plugin)