UNPKG

vpaid-flash-client

Version:
188 lines (163 loc) 5.52 kB
'use strict'; var gulp = require('gulp'); var watchify = require('watchify'); var gutil = require('gulp-util'); var _ = require('lodash'); var runSequence = require('run-sequence'); //server and autoreload var browserSync = require('browser-sync'); var reload = browserSync.reload; //javascript bundle var browserify = require('browserify'); var babelify = require('babelify'); var source = require('vinyl-source-stream'); var sourcemaps = require('gulp-sourcemaps'); var buffer = require('vinyl-buffer'); var assign = _.assign; //flash compile var shell = require('gulp-shell'); var flashSrcPath = 'flash/src'; var flexSDK = './vendor/bin/mxmlc'; var mainFlash = 'VPAIDFlash'; //test var KarmaServer = require('karma').Server; var istanbul = require('browserify-istanbul'); var demoPath = './demo'; var devPath = './dev'; var binPath = './bin'; var testPath = 'test/**/**.js'; function buildJs(entry) { var job = watchify( browserify( assign( {}, watchify.args, { entries: [entry], paths: ['bower_components'], debug: true } ) ) ); //transform es6 to 5 job.transform(babelify); job.on('log', gutil.log); // output build logs to terminal return job; } function bundle(inputFile, destinationPath, outputFile) { return buildJs(inputFile).bundle() .on('error', gutil.log.bind(gutil, 'Browserify error')) .pipe(source(outputFile)) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('./')) .pipe(gulp.dest(destinationPath)) .pipe(reload({stream: true, once: true})); } var buildDemo = bundle.bind(null, 'demo/demo.js', devPath, 'index.js'); var buildMain = bundle.bind(null, 'js/VPAIDFLASHClient.js', binPath, 'VPAIDFLASHClient.js'); gulp.task('browserifyDemo', buildDemo); gulp.task('browserify', buildMain); gulp.task('test:ci', ['compile:flash'], function (done) { new KarmaServer({ configFile: __dirname + '/karma.conf.js', reporters: ['spec', 'coverage'], browserify: { debug: true, paths: ['bower_components'], transform: [ ['babelify', {"presets": ['es2015']}], istanbul({instrumenterConfig: {embedSource: true}}) // temporary fix https://github.com/karma-runner/karma-coverage/issues/157#issuecomment-160555004 ] }, coverageReporter: { reporters: [ { type: 'text', dir: 'coverage/', file: 'coverage.txt' }, { type: 'html', dir: 'coverage/' }, { type: 'lcovonly', dir: 'coverage/', subdir: '.' }, {type: 'text-summary'} ] }, browsers: ['Firefox'] }, function (error) { done(error); }).start(); }); gulp.task('test:dev', function (done) { new KarmaServer({ configFile: __dirname + '/karma.conf.js' }, function (error) { done(error); }).start(); }); gulp.task('compile:flash', function () { var files = [ {path: flashSrcPath + '/com/dailymail/vpaid/' + mainFlash + '.as', fileOutputPath: binPath + '/' + mainFlash + '.swf'}, {path: flashSrcPath + '/TestAd.as', fileOutputPath: demoPath + '/TestAd.swf'} ]; return gulp.src( files.map(function (file) { return file.path; }), {read: false}) .pipe( shell( [ '<%= mxmlc %> -output <%= fileOutput(file.path) %> <%= file.path %> -compiler.source-path <%= srcPath %> -target-player=<%= flashVersion %>' ], { templateData: { fileOutput: function (filePath) { return _.find(files, function(file) { return filePath.indexOf(file.path) > -1; }).fileOutputPath; }, mxmlc: flexSDK, srcPath: flashSrcPath, flashVersion: '10.1.0' } } ) ); }); gulp.task('compileFlashAndTest', function(done) { runSequence( 'compile:flash', 'test:dev', function (err) { done(err); } ); }); //watch file changes gulp.task('watch:demo', function() { buildDemo().on('update', buildDemo); gulp.watch(['demo/*.html', 'demo/*.css'], reload); gulp.watch([binPath + '/*.js'], ['test:dev'], reload); gulp.watch([testPath], ['test:dev']); gulp.watch(['flash/src/**/*.as'], ['compileFlashAndTest'], reload); }); //watch file changes gulp.task('watch:test', function() { buildMain().on('update', buildMain); gulp.watch([binPath + '/*.js'], ['test:dev']); gulp.watch([testPath], ['test:dev']); gulp.watch(['flash/src/**/*.as'], ['compileFlashAndTest'], reload); }); //create the static server gulp.task('serve', ['browserifyDemo', 'compileFlashAndTest', 'watch:demo'], function () { browserSync({ server: { baseDir: ['demo', binPath, 'dev'] } }); }); gulp.task('default', ['test:dev', 'browserify', 'watch:test']);