UNPKG

vpaid-html5-client

Version:
153 lines (129 loc) 3.75 kB
'use strict'; var gulp = require('gulp'); var watchify = require('watchify'); var gutil = require('gulp-util'); var ghPages = require('gulp-gh-pages'); //server and autoreload var browserSync = require('browser-sync'); var reload = browserSync.reload; //javascript bundle var browserify = require('browserify'); var source = require('vinyl-source-stream'); var sourcemaps = require('gulp-sourcemaps'); var buffer = require('vinyl-buffer'); var assign = require('lodash').assign; //test var KarmaServer = require('karma').Server; var istanbul = require('browserify-istanbul'); //paths var testPath = 'test/**/**.js'; var binPath = './bin'; var jsBuilds = [ 'VPAIDHTML5Client.js' ].map(function (entry, index) { var build = watchify( browserify( assign( {}, watchify.args, { entries: ['./js/' + entry], debug: true } ) ) ); var taskName = 'bundle:' + index; build.on('log', gutil.log); // output build logs to terminal gulp.task(taskName, task); return {js: build, task: task, taskName: taskName}; function task() { return build.bundle() .on('error', gutil.log.bind(gutil, 'Browserify error')) .pipe(source(entry)) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('./')) .pipe(gulp.dest(binPath)) .pipe(reload({stream: true, once: true})); } }); function watchBundle() { jsBuilds.forEach(function (build) { build.js.on('update', build.task); }); } gulp.task('browserify', jsBuilds.map(function (build) { return build.taskName; })); gulp.task('test:ci', function (done) { new KarmaServer({ configFile: __dirname + '/karma.conf.js', reporters: ['spec', 'coverage'], browsers: ['Firefox'], browserify: { debug: true, transform: [istanbul()] }, coverageReporter: { reporters: [ { type: 'text', dir: 'coverage/', file: 'coverage.txt' }, { type: 'html', dir: 'coverage/' }, { type: 'lcovonly', dir: 'coverage/', subdir: '.' }, {type: 'text-summary'} ] } }, function () { done(); }).start(); }); gulp.task('test:deploy', function (done) { new KarmaServer({ configFile: __dirname + '/karma.conf.js' }, function () { done(); }).start(); }); gulp.task('test:dev', function (done) { new KarmaServer({ configFile: __dirname + '/karma.conf.js' }, function () { done(); }).start(); }); //watch file changes gulp.task('watch:demo', function() { watchBundle(); gulp.watch(['demo/*'], reload); gulp.watch([binPath + '/*.js'], ['test:dev'], reload); gulp.watch([testPath], ['test:dev']); }); //watch file changes gulp.task('watch:test', function() { watchBundle(); gulp.watch([binPath + '/*.js'], ['test:dev']); gulp.watch([testPath], ['test:dev']); }); //create the static server gulp.task('serve', ['browserify', 'watch:demo'], function () { browserSync({ server: { baseDir: ['demo', binPath] } }); }); gulp.task('deploy:demo', ['test:deploy', 'browserify'], function() { return gulp.src(['demo/**/*', 'bin/*.js', 'bin/*.map']).pipe(ghPages()); }); gulp.task('default', ['test:dev', 'browserify', 'watch:test']);