var gulp = require('gulp'); var concat = require('gulp-concat'); var sort = require('gulp-sort'); var minify = require('gulp-minify'); var plumber = require('gulp-plumber'); var istanbul = require('gulp-istanbul'); var mocha = require('gulp-mocha'); var watch = require('gulp-watch'); gulp.task( 'build', function() { return gulp.src('./src/game-lib-*.js') .pipe(sort()) .pipe(concat('game-lib.js')) .pipe(minify({ ext:{ src:'.js', min:'-min.js' } })) .pipe(gulp.dest('./build/')); } ); gulp.task('test-prepare', function(){ return gulp.src('./build/game-lib.js') .pipe(plumber()) .pipe(istanbul()) .pipe(istanbul.hookRequire()) .on('end', function(){ console.log('prepared the game lib for code coverage'); }); }); gulp.task( 'test', ['build', 'test-prepare'], function() { gulp.src('./test/test.*.js') .pipe(sort()) .pipe(plumber()) .pipe(mocha({reporter: 'spec'})) .pipe(istanbul.writeReports({ dir: './build/coverage' })) .pipe(istanbul.enforceThresholds({thresholds:{global:1}})) .on('error', function(error) { console.log('plugin error occurred' + error); } ) .on('end', function() { console.log('test task ended') } ); } ); gulp.task( 'default', [ 'build' ], function() { return watch([ 'src/*.js' ], function() { gulp.start([ 'build' ]); }) } );