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
1is for major changes and you have to increase it when you make breaking changes to your module. For example, if theaddmethod 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
2is 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 newfindmethod. - The number
3is 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.