如何通过gulp-bump更改app major major和minor版本?

时间:2016-08-20 17:41:07

标签: javascript gulp gulp-bump

我已经成功地在我的gulp构建过程中安装并实现了gulp-bump

但是我只能提高补丁版本,现在已经可以了,因为这是我们大部分时间做的事情,并且每隔几个月左右就会进行一次调整。但是我希望能够,因为我的遗留代码就是这样做的。

我用来做的是输入:V=patch gulp buildV=minor gulp build。我使用let env = process.env.V;要阅读V变量的内容,然后将其传递给generateNextVersion逻辑,以确定要更新的版本点。

关于gulp-bump中的次要和主要补丁的唯一文档是:

  

版本   使用的版本控制:语义   字符串,小写   当您进行不兼容的API更改时,MAJOR(“主要”)版本   以向后兼容的方式添加功能时的MINOR(“次要”)版本

     当您进行向后兼容的错误修复时,

PATCH(“patch”)版本。

     

PRERELEASE(“预发布”)预发布版本

     

版本示例   专业:1.0.0   次要:0.1.0   补丁:0.0.2   预发布:0.0.1-2

const getPackageJson = function () {
    return JSON.parse(fs.readFileSync('./package.json', 'utf8'));
};

gulp.task('build', function(cb) {
runSequence(
    'version',                  // Save new version
    'build:del-assets-static',  // Delete old static folder in app/assets
    'build:move-files',         // Move files into new static folder
    // etc ....
});
gulp.task('version', ['bump'], function() {
    // reget package
    var pkg = getPackageJson();
    // increment version
    version = semver.inc(pkg.version, 'patch');
    process.stdout.write(gutil.colors.red.inverse(' newVer '+version+'                    \n'));
    return generateNextVersion(env);
});

function generateNextVersion(ver) {
    process.stdout.write(gutil.colors.red.inverse(' ver: '+ver+'                    \n'));
    // var major, minor, patch;
    // var versionArray = lastVersion.split('.');
    //
    // major = parseInt(versionArray[0]);
    // minor = parseInt(versionArray[1]);
    // patch = parseInt(versionArray[2]);
    //
    // switch (ver) {
    //     case 'major' : major += 1; patch = 0; break;
    //     case 'minor' : minor += 1; patch = 0; break;
    //     case 'patch' : patch += 1; break;
    // }
    //
    // version = major + '.' + minor + '.' + patch;
    //
    // if (ver === '' || ver === undefined || ver === null) { version = '0.0.0'; }

    process.stdout.write(gutil.colors.blue.bold        ('######################################################     \n'));
    process.stdout.write(gutil.colors.blue.bold.inverse('           Building Dashboard version '+version+'         \n'));
    process.stdout.write(gutil.colors.green.italic     ('               All change is detectable                    \n'));
    process.stdout.write(gutil.colors.blue.bold        ('######################################################     \n'));
}

1 个答案:

答案 0 :(得分:0)

仍然希望得到一个正确的答案,但这就是我现在解决的方法:

gulp.task('bump', () => {
    gulp.src('./package.json').pipe(bump({ key: "version", type: versionType })).pipe(gulp.dest('./'));
});

gulp.task('bump:minor', () => {
    versionType = 'minor';
    gulp.src('./package.json').pipe(bump({ key: "version", type: 'minor' })).pipe(gulp.dest('./'));
});

gulp.task('bump:major', () => {
    versionType = 'major';
    gulp.src('./package.json').pipe(bump({ key: "version", type: 'major' })).pipe(gulp.dest('./'));
});

在次要或重大更新之前只需要额外增加1步,但这些步骤仍然很特别......