You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.7 KiB
137 lines
3.7 KiB
var gulp = require('gulp'); |
|
var plugin = require('gulp-load-plugins')(); |
|
var fs = require('fs'); |
|
var exec = require('child_process').exec; |
|
var argv = require('minimist')(process.argv.slice(2)); |
|
|
|
var path = { |
|
rootdir: './', |
|
lib: ['./lib/**/*.js'], |
|
libdir: './lib/', |
|
test: ['./test/**/*.js'], |
|
testdir: './test/', |
|
build: ['package.json', 'component.json', 'bower.json', 'README.md', 'speakingurl.min.js'], |
|
json: ['package.json', 'component.json', 'bower.json'], |
|
readme: './README.md', |
|
|
|
target: './speakingurl.min.js' |
|
}; |
|
|
|
var banner = ['/**', |
|
' * <%= pkg.name %>', |
|
' * @version v<%= pkg.version %>', |
|
' * @link <%= pkg.homepage %>', |
|
' * @license <%= pkg.licenses[0].type %>', |
|
' * @author <%= pkg.author.name %>', |
|
' */' |
|
].join('\n'); |
|
|
|
gulp.task('beautify', function (done) { |
|
|
|
gulp.src(path.lib) |
|
.pipe(plugin.jsbeautifier({ |
|
config: '.jsbeautifyrc', |
|
mode: 'VERIFY_AND_WRITE' |
|
})) |
|
.pipe(gulp.dest(path.libdir)); |
|
|
|
gulp.src(path.test) |
|
.pipe(plugin.jsbeautifier({ |
|
config: '.jsbeautifyrc', |
|
mode: 'VERIFY_AND_WRITE' |
|
})) |
|
.pipe(gulp.dest(path.testdir)); |
|
|
|
gulp.src(path.json) |
|
.pipe(plugin.jsbeautifier({ |
|
config: '.jsbeautifyrc', |
|
mode: 'VERIFY_AND_WRITE' |
|
})) |
|
.pipe(gulp.dest(path.rootdir)); |
|
|
|
done(); |
|
}); |
|
|
|
gulp.task('test', function () { |
|
|
|
return gulp.src(path.test, { |
|
read: false |
|
}) |
|
.pipe(plugin.mocha({ |
|
reporter: 'spec', |
|
globals: { |
|
should: require('should') |
|
} |
|
})); |
|
}); |
|
|
|
gulp.task('jshint', ['beautify'], function () { |
|
|
|
return gulp.src(path.lib, path.json) |
|
.pipe(plugin.jshint('.jshintrc'), { |
|
verbose: true |
|
}) |
|
.pipe(plugin.jshint.reporter('jshint-stylish')); |
|
}); |
|
|
|
gulp.task('uglify', ['jshint'], function (done) { |
|
|
|
var pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8')); |
|
|
|
return gulp.src(path.lib) |
|
.pipe(plugin.uglify()) |
|
.pipe(plugin.header(banner, { |
|
pkg: pkg |
|
})) |
|
.pipe(plugin.rename(path.target)) |
|
.pipe(gulp.dest(path.rootdir)); |
|
}); |
|
|
|
gulp.task('bumpup', ['bumpup-version'], function () { |
|
|
|
var pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8')); |
|
|
|
// insert newsest version |
|
return gulp.src(path.readme) |
|
.pipe(plugin.replace( |
|
/cdnjs.cloudflare.com\/ajax\/libs\/speakingurl\/\d{1,1}\.\d{1,2}\.\d{1,2}\/speakingurl.min.js/g, |
|
'cdnjs.cloudflare.com/ajax/libs/speakingurl/' + pkg.version + '/speakingurl.min.js')) |
|
.pipe(plugin.replace( |
|
/cdn.jsdelivr.net\/speakingurl\/\d{1,1}\.\d{1,2}\.\d{1,2}\/speakingurl.min.js/g, |
|
'cdn.jsdelivr.net/speakingurl/' + pkg.version + '/speakingurl.min.js')) |
|
.pipe(gulp.dest(path.rootdir)); |
|
}); |
|
|
|
gulp.task('bumpup-version', function () { |
|
|
|
return gulp.src(path.json) |
|
.pipe(plugin.bump({ |
|
type: argv.major ? 'major' : (argv.minor ? 'minor' : 'patch') |
|
})) |
|
.pipe(gulp.dest(path.rootdir)); |
|
}); |
|
|
|
gulp.task('release', function (done) { |
|
|
|
var pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8')); |
|
var tag = 'v' + pkg.version; |
|
var message = 'Release ' + tag; |
|
var execute = [ |
|
'npm rm speakingurl -g', |
|
'npm install . -g', |
|
'git add .', |
|
'git commit -m "Release ' + tag + '"', |
|
'git tag ' + tag + ' -m "Release ' + tag + '"', |
|
'git push -u origin master', |
|
'git push -u origin master --tags', |
|
'npm publish' |
|
].join('\n'); |
|
|
|
exec(execute, done()); |
|
}); |
|
|
|
gulp.task('watch', function () { |
|
gulp.watch([path.json, path.lib], ['jshint', 'test']); |
|
}); |
|
|
|
gulp.task('default', ['test', 'jshint', 'uglify']);
|
|
|