parent
b531322840
commit
6424311ac7
@ -0,0 +1,58 @@ |
||||
var gulp = require('gulp'); |
||||
var pkg = require('./package.json'); |
||||
var semver = require('semver'); |
||||
var util = require('gulp-util'); |
||||
var bump = require('gulp-bump'); |
||||
var conventionalChangelog = require('gulp-conventional-changelog'); |
||||
var git = require('gulp-git'); |
||||
var runSequence = require('run-sequence'); |
||||
|
||||
var releaseType = ''; |
||||
|
||||
gulp.task('bump', function(cb) { |
||||
if (!semver.valid(pkg.version)) { |
||||
util.log(util.colors.red('Error: invalid version number - ' + pkg.version)); |
||||
process.exit(1); |
||||
} |
||||
|
||||
if (!releaseType.match(new RegExp(/major|minor|patch/))) { |
||||
util.log(util.colors.red('Error : required bump \'type\' is missing ! Usage : npm run release --type (major|minor|patch)'));; |
||||
return process.exit(1); |
||||
} |
||||
|
||||
pkg.version = semver.inc(pkg.version, releaseType); |
||||
gulp.src('./package.json') |
||||
.pipe(bump({ version: pkg.version })) |
||||
.pipe(gulp.dest('./')) |
||||
.on('end', cb); |
||||
}); |
||||
|
||||
gulp.task('changelog', function(cb) { |
||||
gulp.src('./CHANGELOG.md', { buffer: false }) |
||||
.pipe(conventionalChangelog({ preset: 'angular' })) |
||||
.pipe(gulp.dest('./')) |
||||
.on('end', cb); |
||||
}); |
||||
|
||||
gulp.task('commit-changelog', function(cb) { |
||||
gulp.src(['./CHANGELOG.md', './package.json']) |
||||
.pipe(git.add()) |
||||
.pipe(git.commit('chore(release): ' + pkg.version)) |
||||
.on('end', cb); |
||||
}); |
||||
|
||||
gulp.task('create-version-tag', function(cb) { |
||||
git.tag('v' + pkg.version, 'release v' + pkg.version, function(err) { if (err) throw err; cb(); }); |
||||
}); |
||||
|
||||
gulp.task('push-to-origin', function(cb) { |
||||
git.push('origin', 'master', { args: '--follow-tags' }, function(err) { if (err) throw err; cb(); }); |
||||
}); |
||||
|
||||
gulp.task('release', function(cb) { |
||||
runSequence('bump', 'changelog', 'commit-changelog', 'create-version-tag', 'push-to-origin', cb); |
||||
}); |
||||
|
||||
gulp.task('release-major', function() { releaseType = 'major'; gulp.start('release'); }); |
||||
gulp.task('release-minor', function() { releaseType = 'minor'; gulp.start('release'); }); |
||||
gulp.task('release-patch', function() { releaseType = 'patch'; gulp.start('release'); }); |
Loading…
Reference in new issue