UNPKG

gulp-tag-version

Version:

Tag git repository with current package version

107 lines (87 loc) 4 kB
gulp-tag-version ================ [![npm](https://img.shields.io/npm/v/gulp-tag-version.svg?maxAge=2592000&style=flat-square)]() [![npm](https://img.shields.io/npm/dt/gulp-tag-version.svg?maxAge=2592000&style=flat-square)]() [![npm](https://img.shields.io/npm/dm/gulp-tag-version.svg?maxAge=2592000&style=flat-square)]() Tag git repository with current package version (gulp plugin). It will read the `version` attribute (by default, override with `key` option) from the JSON stream (probably your `package.json` or `bower.json`), prefixes it with `"v"` (override with `prefix` option) and _tags_ the repository (effectively issues the `git tag <tagname>` command) with such created tagname (e.g. `v1.2.3`). Simple example gulpfile ----------------------- ```js var gulp = require('gulp'), tagVersion = require('gulp-tag-version'); // Assuming there's "version: 1.2.3" in package.json, // tag the last commit as "v1.2.3" gulp.task('tag', function() { return gulp.src(['./package.json']).pipe(tagVersion()); }); ``` Advanced example gulpfile (with bumping and commiting) ------------------------------------------------------ ```js // dependencies var gulp = require('gulp'), git = require('gulp-git'), bump = require('gulp-bump'), filter = require('gulp-filter'), tagVersion = require('gulp-tag-version'); /** * Bumping version number and tagging the repository with it. * Please read http://semver.org/ * * You can use the commands * * gulp patch # makes v0.1.0 → v0.1.1 * gulp feature # makes v0.1.1 → v0.2.0 * gulp release # makes v0.2.1 → v1.0.0 * * To bump the version numbers accordingly after you did a patch, * introduced a feature or made a backwards-incompatible release. */ function inc(importance) { // get all the files to bump version in return gulp.src(['./package.json', './bower.json']) // bump the version number in those files .pipe(bump({type: importance})) // save it back to filesystem .pipe(gulp.dest('./')) // commit the changed version number .pipe(git.commit('bumps package version')) // read only one file to get the version number .pipe(filter('package.json')) // **tag it in the repository** .pipe(tagVersion()); } gulp.task('patch', function() { return inc('patch'); }) gulp.task('feature', function() { return inc('minor'); }) gulp.task('release', function() { return inc('major'); }) ``` Other features/remarks ---------------------- * If you need any special tagging options to be passed down to `git.tag`, just add it to the `tagVersion` options. For example: ```js gulp.task('bump_submodule', function(){ return gulp.src('./bower.json', { cwd: './dist' }) .pipe(bump({type: 'patch'})) .pipe(gulp.dest('./',{ cwd: './dist' })) .pipe(git.commit('bumps package version',{cwd: './dist'})) .pipe(filter('bower.json')) .pipe(tagVersion({cwd: './dist'})); }); ``` * If you don't want the version number to be read from the input stream, use the `version` parameter: ```js* return gulp.src ... ... .pipe(tagVersion({version: '1.2.3'})); ``` Thanks :beer: -------- * to guys and gals from Fractal for [Gulp](http://gulpjs.com/) itself, obviously * to Steve Lacy (http://slacy.me) for creating [`gulp-bump`](https://github.com/stevelacy/gulp-bump) and [`gulp-git`](https://github.com/stevelacy/gulp-git) used here * The main file structure is based on `gulp-bump` a bit as well (this is my first plugin :)) * To [@pacemkr](https://github.com/pacemkr) for the first pull request I ever got (supporting empty prefix) * To [@lapanoid](https://github.com/lapanoid) for passing `opts` down to `git.tag` * To [@brianmhunt](https://github.com/brianmhunt) for suggesting the `version` parameter * To [@adambuczynski](https://github.com/adambuczynski) for option to customize tag label * To [@mjeanroy](https://github.com/mjeanroy) for a gulp-util obsoletion update