How to Increment Version Number via Gulp Task? How to Increment Version Number via Gulp Task? javascript javascript

How to Increment Version Number via Gulp Task?


Install gulp-bump

npm install gulp-bump --save-dev

Install yargs

npm install yargs --save-dev

Require gulp-bump

var bump = require('gulp-bump');

Require yargs

var args = require('yargs').argv;

Your bump task

gulp.task('bump', function () {    /// <summary>    /// It bumps revisions    /// Usage:    /// 1. gulp bump : bumps the package.json and bower.json to the next minor revision.    ///   i.e. from 0.1.1 to 0.1.2    /// 2. gulp bump --version 1.1.1 : bumps/sets the package.json and bower.json to the     ///    specified revision.    /// 3. gulp bump --type major       : bumps 1.0.0     ///    gulp bump --type minor       : bumps 0.1.0    ///    gulp bump --type patch       : bumps 0.0.2    ///    gulp bump --type prerelease  : bumps 0.0.1-2    /// </summary>    var type = args.type;    var version = args.version;    var options = {};    if (version) {        options.version = version;        msg += ' to ' + version;    } else {        options.type = type;        msg += ' for a ' + type;    }    return gulp        .src(['Path to your package.json', 'path to your bower.json'])        .pipe(bump(options))        .pipe(gulp.dest('path to your root directory'));});

VSO Note: I believe a lot of people coming to this thread will be looking exactly for the answer above. The code below is to edit a version number stored somewhere BESIDES the npm/bower package files, such as in angular constants:

gulp.task('increment-version', function(){    //docString is the file from which you will get your constant string    var docString = fs.readFileSync('./someFolder/constants.js', 'utf8');    //The code below gets your semantic v# from docString    var versionNumPattern=/'someTextPreceedingVNumber', '(.*)'/; //This is just a regEx with a capture group for version number    var vNumRexEx = new RegExp(versionNumPattern);    var oldVersionNumber = (vNumRexEx.exec(docString))[1]; //This gets the captured group    //...Split the version number string into elements so you can bump the one you want    var versionParts = oldVersionNumber.split('.');    var vArray = {        vMajor : versionParts[0],        vMinor : versionParts[1],        vPatch : versionParts[2]    };    vArray.vPatch = parseFloat(vArray.vPatch) + 1;    var periodString = ".";    var newVersionNumber = vArray.vMajor + periodString +                           vArray.vMinor+ periodString +                           vArray.vPatch;    gulp.src(['./someFolder/constants.js'])        .pipe(replace(/'someTextPreceedingVNumber', '(.*)'/g, newVersionNumber))        .pipe(gulp.dest('./someFolder/'));});

I ommitted some mumbo-jumbo that writes my constant in a pretty string, but that's the gist and it works.


Started looking into gulp since past 5 hours,as I had a task to fix the requirement. So, being a definite noob to gulp I came out with the below code which is without the regex expression. Thanks to @VSO and @Wilmer Saint for a quick start. Might be a tiny change, but this helped me.

gulp.task('version', function(){  var fs = require('fs');    //docString is the file from which you will get your constant string    var docString = fs.readFileSync('app/scripts/version/version.js', 'utf8'); //type of docString i an object here.    var versionParts = docString.split('.');    var vArray = {        vMajor : versionParts[0],        vMinor : versionParts[1],        vPatch : versionParts[2]    };    vArray.vPatch = parseFloat(vArray.vPatch) + 1;    var periodString = ".";    var newVersionNumber = vArray.vMajor + periodString +                           vArray.vMinor+ periodString +                           vArray.vPatch;    require('fs').writeFileSync('app/scripts/version/version.js', newVersionNumber + "'");        return gulp.src(['app/scripts/version/version.js'])            .pipe(gulp.dest('app/scripts/version/new_version'));//creates version.js file in the directory    });

or the return code could be as below to override the number in version.js file

return gulp.src(['app/scripts/version/version.js'],                {base: './app/scripts/version/version.js'})        .pipe((gulp.dest('./app/scripts/version/version.js'))) 

My version.js has only below code

versionBuild = '1.0.8'

I used the below in my main function(loads on loading the app)

var versionBuild=parseInt(1000*Math.random());var random = function(digs){    var rndn;    if(window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1") {        rndn = Math.random();        if(digs != undefined && !isNaN(digs)){              rndn =  parseInt(Math.pow(10, digs)*rndn)              }              return rndn;    }    else {        return versionBuild;    }}


you can use gulp-bump, it's very easy and sweet :)

npm install --save gulp-bump
const bump = require('gulp-bump');gulp.task('bump', async () => {    gulp.src('./package.json')    .pipe(bump({key: "version"}))    .pipe(gulp.dest('./'));  });

Note: use async before a function. it's a requirement.