Semantic versioning is a very nice way to keep track of the evolution of your module. Basically, your module will have 3 numbers, for example 1.2.3
, where:
- The number
1
is for major changes and you have to increase it when you make breaking changes to your module. For example, if theadd
method accept an object as argument and you change it to only accept arrays for now on, you have to increase the major number since you created a breaking change. - The number
2
is for minor changes and you have to increase it when you add new functionalities to your public API without making any breaking changes. For example, add a newfind
method. - The number
3
is for patch changes and you have to increase it when you fix something, without changing the public API. For example, you manage to iterate over the feed list in a much more efficient way.
For more informations about semantic version: http://semver.org/
There's a very easy way to bump package.json
version and create a release tag to Github using npm.
Commit everything you have unstaged and then just run the below command to do that for a 1.0.0
version for example.
$ npm version 1.0.0
It will not only update the version
property of your package.json
but also will create a commit and a tag with that version.
To push that git tag to your remote branch, you need to add --follow tags
in your push command:
$ git push --follow-tags
But there's a better way, just configure your Git to always push relevant annotated tags with this configuration:
$ git config --global push.followTags true
When when you push your feature branch, it will also push the version tag.
And this is responsible to automatically create a release inside Github.
Awesome!
After you merge everything to master, just type this simple command in your terminal to publish everything to npm:
$ npm publish
And you're done, awesome!
From now on you will just keep iterating over the same things until your module internals are complete.