123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- 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']);
|