Gets and parses semver tags using Git and Node.js
Assuming you have the following git tags:
v1.0.1
v1.0.0
v0.1.0-beta
NonSemverTag
Get all semver tags
Argument | Type | Description |
---|---|---|
repo (optional) |
string |
Optional repo path. Defaults to process.cwd() |
callback |
function |
Required callback fn |
callback(err) |
null | Error |
Error, if there is one |
callback(tags) |
Array.<string> |
Array of semver tags found (e.g. ['1.0.1', '1.0.0'] ) |
var gittags = require('git-tags');
gittags.get(function(err, tags) {
if (err) throw err;
console.log(tags);
// ['1.0.1', '1.0.0', '0.1.0-beta']
});
// Also takes a repo location:
gittags.get('/foorepo', function(err, tags) {});
Latest
Name | Type | Description |
---|---|---|
repo (optional) |
string |
Optional repo path. Defaults to process.cwd() |
callback |
function |
Required callback |
err |
null | Error |
Error if, there is one |
latest |
string |
Latest semver tag found (e.g. '1.0.1' ) |
gittags.latest(function(err, latest) {
console.log(latest);
// '1.0.1'
});
Oldest
Same as latest
but opposite.
gittags.oldest(function(err, oldest) {
console.log(oldest);
// '0.1.0-beta'
});
Semver Parse
Two functions relating to semver exist for convenience. parse
is just semver.parse
, and mmp
which stands for "Major, Minor, Patch". If you need more semver stuff, you should use the node-semver module directly.
Name | Type | Description |
---|---|---|
tag |
string |
Version string to parse (e.g. 'v1.0.2-beta' ). See node-semver for more info. |
Name | Type | Description |
---|---|---|
tag |
string |
Tag to format (e.g. 'v1.0.2-beta' ) |
formattedTag |
string |
Major.Minor.Patch formatted tag (e.g. '1.0.2' ) |
gittags.mmp('v1.3.10-beta.12');
// => '1.3.10'
var version = gittags.parse('v1.3.10-beta.12');
// <SemVer "1.3.10-beta.12">
version.prerelease;
// ['beta', 12]
version.compare('v1.3.10');
// -1
version.compare('v1.3.9');
// 1
// etc...
Note Stating the obvious, this module uses the callback fashion of async handling. This makes them easy to integrate w/ promises.
Bluebird, for example
var Q = require('bluebird');
var gittags = Q.promisifyAll(require('git-tags'));
gittags.latestAsync().then(console.log);
// 1.0.1
I originally intended this to use child_process.spawn
and return a stream, but I then realized these are blocking in Linux/Unix, limiting the usefulness of that. And it's Git tags so who cares?
If you want streams, you can use something like highland.js which is awesome, BTW.
MIT