当前位置: 首页 > 面试题库 >

如何通过Gulp Task增加版本号?

向安福
2023-03-14
问题内容

我想myConstantsFile.js用另一个字符串替换指示javascript文件()中版本号的字符串。因此,例如,我的版本号看起来像这样:“
01.11.15”,myConstantsFile.js 用其他常量这样写:

.constant('productVersion', '1.11.15');

现在,我的任务如下所示:

gulp.task('increment-version', function(){
    gulp.src(['./somedir/myConstantsFile.js'])
        .pipe(replace(/'productVersion', '(.*)'/g, '99.99.99'))
        .pipe(gulp.dest('./somedir/'));
});

如您所见,我正在使用一个常量,而不是运行增量代码,它看起来像这样:

    var numberString = '0.0.1';
    var versionParts = numberString.split('.');
    var vArray = {
      vMajor : versionParts[0],
      vMinor : versionParts[1],
      vPatch : versionParts[2]
    }

    vArray.vPatch = parseFloat(vArray.vPatch) + 1;
    var periodString = ".";

    var newVersionNumberString = vArray.vMajor + periodString + 
                                vArray.vMinor+ periodString + 
                                vArray.vPatch;

我需要:

  1. 通过文件的正则表达式选择当前版本号的方法
  2. 要知道我可以在最后一个代码块中放置逻辑以增加数字并构建新的字符串。

问题答案:

安装gulp-bump

npm install gulp-bump --save-dev

安装yargs

npm install yargs --save-dev

需要大吃一惊

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

需要yargs

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

你的颠簸任务

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注意:我相信很多参加此话题的人都将确切地寻找上述答案。下面的代码用于编辑存储在npm / bower软件包文件之外的版本号,例如角度常数:

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/'));
});

我省略了一些将其常量写成漂亮字符串的巨型组合,但这就是要点,并且有效。



 类似资料:
  • 问题内容: 有没有一种方法可以通过Hibernate 3.2 API获得一些基础数据库版本的信息?我在这里和javadoc中都找不到相关的位。 问题答案: 获取数据库引擎的版本是特定于实现的。这意味着没有获取版本的共享方法,因此Hibernate不能真正提供API,因为它没有绑定到任何特定的RDBMS。例如,以下是通过一些著名的RDBMS使用SELECT语句获取版本的几种不同方法: Oracle

  • 问题内容: 我想将PHPUnit 3.4的安装降级为3.3。我只是不确定如何去做。 如何使用PEAR在Ubuntu上安装PHPUnit版本3.3? 问题答案: 您需要知道要降级到的确切版本号。在撰写本文时,您所追求的最后一个发行版是3.3.17,可以通过检查相应的PEAR通道来找到。 要降级到该特定版本,请执行以下两个命令:

  • 问题内容: 通过npm安装特定版本需要运行什么命令? 如果我运行代码 npm install -g cordova, 它将安装最新版本。由于我使用的是多台笔记本电脑和计算机,因此当我来回切换它们时,它们需要具有相同的版本。 这是我正在使用的IONIC的版本,并且是首选版本:我想避免并 更新 它们,因为如果使用最新版本,可能会遇到错误。 顺便说一句,我通过github https://github.

  • 如何增加Vaadin通知/警告时间?我用的是Vaadin Valo主题。从Vaadin的书籍通知页面没有任何帮助。

  • 问题内容: 我希望能够通过命令行命令检测计算机上安装了哪种特定的Linux风格,例如Ubuntu vs Fedora。 有人建议,但这仅报告内核版本。 问题答案: 尝试以下命令…。它对我有用… 例如,一旦知道您正在运行Red Hat,您就可以使用以下方法解决问题: 猫/ etc / redhat-release 或在Debian上: 猫/ etc / debian_version 或一般而言: 猫