我已经成功地在我的gulp构建过程中安装并实现了gulp-bump。
但是我只能提高补丁版本,现在已经可以了,因为这是我们大部分时间做的事情,并且每隔几个月左右就会进行一次调整。但是我希望能够,因为我的遗留代码就是这样做的。
我用来做的是输入:V=patch gulp build
或V=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'));
}
答案 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步,但这些步骤仍然很特别......