1. git-tags
Get and parse semver Git tags using Node.js
git-tags
Package: git-tags
Created by: bfricka
Last modified: Sat, 18 Jun 2022 08:36:18 GMT
Version: 0.2.4
License: MIT
Downloads: 3,812
Repository: https://github.com/bfricka/node-git-tags

Install

npm install git-tags
yarn add git-tags

Node Git Tags

Gets and parses semver tags using Git and Node.js

Usage

Assuming you have the following git tags:

  • v1.0.1
  • v1.0.0
  • v0.1.0-beta
  • NonSemverTag

Get all semver tags

gittags.get([repo], callback(err, 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

gittags.latest([repo], callback(err, 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

gittags.oldest([repo], callback(err, 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.

gittags.parse(tag) -> SemVer

Name Type Description
tag string Version string to parse (e.g. 'v1.0.2-beta'). See node-semver for more info.

gittags.mmp(tag) -> formattedTag

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('gittags'));

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.

License

MIT

RELATED POST

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin