Bump package version, run tasks, git tag, commit & push.
This is based on grunt-push-release
This plugin requires Grunt ~0.4.1
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-bumper --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-bumper');
This shows all the available config options with their default values.
bumper:
options:
files: ["package.json"]
updateConfigs: ['pkg'] # array of config properties to update (with files)
releaseBranch: false
runTasks: true
tasks: ["default"]
add: true
addFiles: ["."] # '.' for all files except ingored files in .gitignore
commit: true
commitMessage: "Release v%VERSION%"
commitFiles: ["-a"] # '-a' for all files
createTag: true
tagName: "v%VERSION%"
tagMessage: "Version %VERSION%"
push: true
pushTo: "origin"
npm: false
npmTag: "Release v%VERSION%"
gitDescribeOptions: "--tags --always --abbrev=1 --dirty=-d"
Type Array
Default ['package.json']
List of files to bump. Maybe you wanna bump 'component.json' as well ?
Type Array
Default ['pkg']
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.
bumper:
options:
files: ["package.json", "bower.json"]
updateConfigs: ["pkg", "bower"]
Type Boolean
Default false
Define branch(es) on which it is allowed to make releases. Either define a single one as string or severals as array. This helps to not accidentially make a release on a topic branch.
push: {
releaseBranch: ['develop', 'master']
}
Type Boolean
Default true
Do you want to run tasks after bumping the version?
Type Array
Default ['default']
List of tasks to be executed after bumping the version and before adding/commiting the files. Note: as this is being executed as a child process you are running in a different context!
Type Boolean
Default true
Do you want to git add
files?
Type Array
Default ['.']
An array of files that you wanna add. You can use ['.']
to add all files.
Type Boolean
Default true
Do you wanna commit the changes?
Type String
Default 'Release v%VERSION%'
The commit message. You can use %VERSION%
which will get replaced with the new version.
Type Array
Default ['-a']
An array of files that you wanna commit. You can use ['-a']
to commit all files.
Type Boolean
Default true
Do you want to create a git tag?
Type String
Default 'v%VERSION%'
The tag name. You can use %VERSION%
which will get replaced with the new version.
Type String
Default 'Version v%VERSION%'
The tag message. You can use %VERSION%
which will get replaced with the new version.
Type Boolean
Default true
Do you want to push all these changes?
Type String
Default 'origin'
Name of the remote branch to push to.
Type Boolean
Default false
Do you wanna publish all these changes to NPM?
Make sure you have registered an npm used: 'npm adduser'
Type String
Default 'Release v%VERSION%'
The name of the tag. You can use %VERSION%
which will get replaced with the new version.
Let's say current version is 0.0.1
.
$ grunt bumper
>> Version bumped to 0.0.2
>> Committed as "Release v0.0.2"
>> Tagged as "v0.0.2"
>> Pushed to origin
$ grunt bumper:patch
>> Version bumped to 0.0.3
>> Committed as "Release v0.0.3"
>> Tagged as "v0.0.3"
>> Pushed to origin
$ grunt bumper:minor
>> Version bumped to 0.1.0
>> Committed as "Release v0.1.0"
>> Tagged as "v0.1.0"
>> Pushed to origin
$ grunt bumper:major
>> Version bumped to 1.0.0
>> Committed as "Release v1.0.0"
>> Tagged as "v1.0.0"
>> Pushed to origin
$ grunt bumper: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
You can use bump-only
and bump-commit
to call each step separately.
$ grunt bumper-only:minor
$ grunt bumper-commit
$ grunt bumper-release //This will do a full push and publish to npm even if you have configured npm option to false
$ grunt bumper-publish //Just publishes to NPM overriding (npm option: false)
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Copyright (c) We Are Interactive under the MIT license.