Bump package version, create tag, commit, push...
Install npm package, next to your project's Gruntfile.js
file:
npm install grunt-bump --save-dev
Add this line to your project's Gruntfile.js
:
grunt.loadNpmTasks('grunt-bump');
Let's say current version is 0.0.1
.
$ grunt bump
>> Version bumped to 0.0.2
>> Committed as "Release v0.0.2"
>> Tagged as "v0.0.2"
>> Pushed to origin
$ grunt bump:patch
>> Version bumped to 0.0.3
>> Committed as "Release v0.0.3"
>> Tagged as "v0.0.3"
>> Pushed to origin
$ grunt bump:minor
>> Version bumped to 0.1.0
>> Committed as "Release v0.1.0"
>> Tagged as "v0.1.0"
>> Pushed to origin
$ grunt bump:major
>> Version bumped to 1.0.0
>> Committed as "Release v1.0.0"
>> Tagged as "v1.0.0"
>> Pushed to origin
$ grunt bump:build
>> Version bumped to 1.0.0-1
>> Committed as "Release v1.0.0-1"
>> Tagged as "v1.0.0-1"
>> Pushed to origin
$ grunt bump:git
>> Version bumped to 1.0.0-1-ge96c
>> Committed as "Release v1.0.0-1-ge96c"
>> Tagged as "v1.0.0-1-ge96c"
>> Pushed to origin
If you want to jump to an exact version, you can use the setversion
tag in the command line.
$ grunt bump --setversion=2.0.1
>> Version bumped to 2.0.1
>> Committed as "Release v2.0.1"
>> Tagged as "v2.0.1"
>> Pushed to origin
Sometimes you want to run another task between bumping the version and commiting, for instance generate changelog. You can use bump-only
and bump-commit
to achieve that:
$ grunt bump-only:minor
$ grunt changelog
$ grunt bump-commit
This shows all the available config options with their default values.
bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: grunt.option('commit') || 'Release v%VERSION%',
commitFiles: ['package.json'], // '-a' for all files
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'upstream',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' // options to use with '$ git describe'
}
}
List of files to bump. Maybe you wanna bump 'component.json' as well ?
Sometimes you load the content of package.json
into a grunt config. This will update the config property, so that even tasks running in the same grunt process see the updated value.
bump: {
files: ['package.json', 'component.json'],
updateConfigs: ['pkg', 'component']
}
Do you wanna commit the changes ?
If so, what is the commit message ? You can use %VERSION%
which will get replaced with the new version.
Set to a custom message with --commit [your message]
:
grunt bump --commit 'i fixed the bug in foo'
(note this requires that you keep the syntax grunt.option('commit')
in the bump configuration as shown above)
An array of files that you wanna commit. You can use ['-a']
to commit all files.
Do you wanna create a tag ?
If so, this is the name of that tag (%VERSION%
placeholder is available).
Yep, you guessed right, it's the message of that tag - description (%VERSION%
placeholder is available).
Do you wanna push all these changes ?
If so, which remote branch would you like to push to ?