diff --git a/buildout.cfg b/buildout.cfg index a895bdc..9623da1 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -42,6 +42,7 @@ packages = gulp-concat-sourcemap gulp-connect gulp-gh-pages + gulp-karma gulp-less gulp-minify-css gulp-minify-html diff --git a/gulpfile.js b/gulpfile.js index 61c8eca..e11c444 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,113 +1,122 @@ var gulp = require('gulp'), - ts = require('gulp-typescript'), - less = require('gulp-less'), - minifyCSS = require('gulp-minify-css'), - concat = require('gulp-concat-sourcemap'), - sourcemaps = require('gulp-sourcemaps'), - processhtml = require('gulp-processhtml'), - connect = require('gulp-connect'), - open = require('gulp-open'), - del = require('del'), - uglify = require('gulp-uglifyjs'), - deploy = require('gulp-gh-pages'), - runSequence = require('run-sequence'); + ts = require('gulp-typescript'), + less = require('gulp-less'), + minifyCSS = require('gulp-minify-css'), + concat = require('gulp-concat-sourcemap'), + sourcemaps = require('gulp-sourcemaps'), + processhtml = require('gulp-processhtml'), + connect = require('gulp-connect'), + karma = require('gulp-karma'), + open = require('gulp-open'), + del = require('del'), + uglify = require('gulp-uglifyjs'), + deploy = require('gulp-gh-pages'), + runSequence = require('run-sequence'); var paths = { - assets: 'src/assets/**/*', - less: 'src/css/main.less', - index: 'src/index.html', - libs: [ - 'src/vendor/phaser-official/build/phaser.min.js' - ], - ts: 'src/scripts/**/*.ts', - build: './build/', - dist: './dist/' + assets: 'src/assets/**/*', + less: 'src/css/main.less', + index: 'src/index.html', + libs: [ + 'src/vendor/jasmine/lib/jasmine-core/jasmine.js', + 'src/vendor/jasmine/lib/jasmine-core/jasmine-html.js', + 'src/vendor/jasmine/lib/jasmine-core/boot.js', + 'src/vendor/phaser-official/build/phaser.min.js' + ], + ts: 'src/scripts/**/*.ts', + build: './build/', + dist: './dist/' }; gulp.task('clean', function (cb) { - return del([paths.build, paths.dist], cb); + return del([paths.build, paths.dist], cb); }); gulp.task('copy', function () { - return gulp.src(paths.assets) - .pipe(gulp.dest(paths.dist + 'assets')); + return gulp.src(paths.assets) + .pipe(gulp.dest(paths.dist + 'assets')); }); var tsProject = ts.createProject({ - declarationFiles: true, - noExternalResolve: true, - noImplicitAny: true, - sortOutput: true, - sourceRoot: '../scripts' + declarationFiles: true, + noExternalResolve: true, + noImplicitAny: true, + sortOutput: true, + sourceRoot: '../scripts' }); gulp.task('typescript', function () { - var tsResult = gulp.src(paths.ts) - .pipe(sourcemaps.init()) - .pipe(ts(tsProject)); + var tsResult = gulp.src(paths.ts) + .pipe(sourcemaps.init()) + .pipe(ts(tsProject)); - return tsResult.js - .pipe(concat('main.js')) - .pipe(sourcemaps.write()) - .pipe(gulp.dest(paths.build)); + return tsResult.js + .pipe(concat('main.js')) + .pipe(sourcemaps.write()) + .pipe(gulp.dest(paths.build)); }); gulp.task('less', function () { - return gulp.src(paths.less) - .pipe(less()) - .pipe(gulp.dest(paths.build)); + return gulp.src(paths.less) + .pipe(less()) + .pipe(gulp.dest(paths.build)); +}); + +gulp.task('tests', ['typescript'], function () { + return gulp.src(paths.libs + [paths.build + 'main.js']) + .pipe(karma({configFile: 'karma.conf.js', action: 'run'})) }); gulp.task('processhtml', function () { - return gulp.src(paths.index) - .pipe(processhtml()) - .pipe(gulp.dest(paths.dist)); + return gulp.src(paths.index) + .pipe(processhtml()) + .pipe(gulp.dest(paths.dist)); }); gulp.task('reload', ['typescript'], function () { - gulp.src('src/*.html') - .pipe(connect.reload()); + gulp.src('src/*.html') + .pipe(connect.reload()); }); gulp.task('watch', function () { - gulp.watch(paths.ts, ['typescript', 'reload']); - gulp.watch(paths.less, ['less', 'reload']); - gulp.watch(paths.index, ['reload']); + gulp.watch(paths.ts, ['typescript', 'tests', 'reload']); + gulp.watch(paths.less, ['less', 'reload']); + gulp.watch(paths.index, ['reload']); }); gulp.task('connect', function () { - connect.server({ - root: [__dirname + '/src', paths.build], - port: 9000, - livereload: true - }); + connect.server({ + root: [__dirname + '/src', paths.build], + port: 9000, + livereload: true + }); }); gulp.task("open", function () { - gulp.src(paths.index) - .pipe(open("", {url: "http://localhost:9000"})); + gulp.src(paths.index) + .pipe(open("", {url: "http://localhost:9000"})); }); gulp.task('minifyJs', ['typescript'], function () { - return gulp.src(paths.libs.concat(paths.build + 'main.js')) - .pipe(uglify('all.min.js', {outSourceMap: false})) - .pipe(gulp.dest(paths.dist)); + return gulp.src(paths.libs.concat(paths.build + 'main.js')) + .pipe(uglify('all.min.js', {outSourceMap: false})) + .pipe(gulp.dest(paths.dist)); }); gulp.task('minifyCss', ['less'], function () { - return gulp.src(paths.build + 'main.css') - .pipe(minifyCSS()) - .pipe(gulp.dest(paths.dist)) + return gulp.src(paths.build + 'main.css') + .pipe(minifyCSS()) + .pipe(gulp.dest(paths.dist)) }); gulp.task('deploy', function () { - return gulp.src('./dist/**/*') - .pipe(deploy()); + return gulp.src('./dist/**/*') + .pipe(deploy()); }); -gulp.task('default', function() { - runSequence('clean', ['typescript', 'less', 'connect', 'watch'], 'open'); +gulp.task('default', function () { + runSequence('clean', ['typescript', 'less', 'connect', 'watch'], ['tests', 'open']); }); -gulp.task('build', function() { - return runSequence('clean', ['typescript', 'less', 'copy', 'minifyJs', 'minifyCss', 'processhtml']); +gulp.task('build', function () { + return runSequence('clean', ['typescript', 'less', 'copy', 'minifyJs', 'minifyCss', 'processhtml']); });