1
0
Fork 0

Added karma coverage to the build loop

This commit is contained in:
Michaël Lemaire 2015-01-07 01:00:00 +01:00 committed by Michaël Lemaire
parent 39fda0ffce
commit 6b5e058382
2 changed files with 76 additions and 66 deletions

View file

@ -42,6 +42,7 @@ packages =
gulp-concat-sourcemap gulp-concat-sourcemap
gulp-connect gulp-connect
gulp-gh-pages gulp-gh-pages
gulp-karma
gulp-less gulp-less
gulp-minify-css gulp-minify-css
gulp-minify-html gulp-minify-html

View file

@ -1,113 +1,122 @@
var gulp = require('gulp'), var gulp = require('gulp'),
ts = require('gulp-typescript'), ts = require('gulp-typescript'),
less = require('gulp-less'), less = require('gulp-less'),
minifyCSS = require('gulp-minify-css'), minifyCSS = require('gulp-minify-css'),
concat = require('gulp-concat-sourcemap'), concat = require('gulp-concat-sourcemap'),
sourcemaps = require('gulp-sourcemaps'), sourcemaps = require('gulp-sourcemaps'),
processhtml = require('gulp-processhtml'), processhtml = require('gulp-processhtml'),
connect = require('gulp-connect'), connect = require('gulp-connect'),
open = require('gulp-open'), karma = require('gulp-karma'),
del = require('del'), open = require('gulp-open'),
uglify = require('gulp-uglifyjs'), del = require('del'),
deploy = require('gulp-gh-pages'), uglify = require('gulp-uglifyjs'),
runSequence = require('run-sequence'); deploy = require('gulp-gh-pages'),
runSequence = require('run-sequence');
var paths = { var paths = {
assets: 'src/assets/**/*', assets: 'src/assets/**/*',
less: 'src/css/main.less', less: 'src/css/main.less',
index: 'src/index.html', index: 'src/index.html',
libs: [ libs: [
'src/vendor/phaser-official/build/phaser.min.js' 'src/vendor/jasmine/lib/jasmine-core/jasmine.js',
], 'src/vendor/jasmine/lib/jasmine-core/jasmine-html.js',
ts: 'src/scripts/**/*.ts', 'src/vendor/jasmine/lib/jasmine-core/boot.js',
build: './build/', 'src/vendor/phaser-official/build/phaser.min.js'
dist: './dist/' ],
ts: 'src/scripts/**/*.ts',
build: './build/',
dist: './dist/'
}; };
gulp.task('clean', function (cb) { gulp.task('clean', function (cb) {
return del([paths.build, paths.dist], cb); return del([paths.build, paths.dist], cb);
}); });
gulp.task('copy', function () { gulp.task('copy', function () {
return gulp.src(paths.assets) return gulp.src(paths.assets)
.pipe(gulp.dest(paths.dist + 'assets')); .pipe(gulp.dest(paths.dist + 'assets'));
}); });
var tsProject = ts.createProject({ var tsProject = ts.createProject({
declarationFiles: true, declarationFiles: true,
noExternalResolve: true, noExternalResolve: true,
noImplicitAny: true, noImplicitAny: true,
sortOutput: true, sortOutput: true,
sourceRoot: '../scripts' sourceRoot: '../scripts'
}); });
gulp.task('typescript', function () { gulp.task('typescript', function () {
var tsResult = gulp.src(paths.ts) var tsResult = gulp.src(paths.ts)
.pipe(sourcemaps.init()) .pipe(sourcemaps.init())
.pipe(ts(tsProject)); .pipe(ts(tsProject));
return tsResult.js return tsResult.js
.pipe(concat('main.js')) .pipe(concat('main.js'))
.pipe(sourcemaps.write()) .pipe(sourcemaps.write())
.pipe(gulp.dest(paths.build)); .pipe(gulp.dest(paths.build));
}); });
gulp.task('less', function () { gulp.task('less', function () {
return gulp.src(paths.less) return gulp.src(paths.less)
.pipe(less()) .pipe(less())
.pipe(gulp.dest(paths.build)); .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 () { gulp.task('processhtml', function () {
return gulp.src(paths.index) return gulp.src(paths.index)
.pipe(processhtml()) .pipe(processhtml())
.pipe(gulp.dest(paths.dist)); .pipe(gulp.dest(paths.dist));
}); });
gulp.task('reload', ['typescript'], function () { gulp.task('reload', ['typescript'], function () {
gulp.src('src/*.html') gulp.src('src/*.html')
.pipe(connect.reload()); .pipe(connect.reload());
}); });
gulp.task('watch', function () { gulp.task('watch', function () {
gulp.watch(paths.ts, ['typescript', 'reload']); gulp.watch(paths.ts, ['typescript', 'tests', 'reload']);
gulp.watch(paths.less, ['less', 'reload']); gulp.watch(paths.less, ['less', 'reload']);
gulp.watch(paths.index, ['reload']); gulp.watch(paths.index, ['reload']);
}); });
gulp.task('connect', function () { gulp.task('connect', function () {
connect.server({ connect.server({
root: [__dirname + '/src', paths.build], root: [__dirname + '/src', paths.build],
port: 9000, port: 9000,
livereload: true livereload: true
}); });
}); });
gulp.task("open", function () { gulp.task("open", function () {
gulp.src(paths.index) gulp.src(paths.index)
.pipe(open("", {url: "http://localhost:9000"})); .pipe(open("", {url: "http://localhost:9000"}));
}); });
gulp.task('minifyJs', ['typescript'], function () { gulp.task('minifyJs', ['typescript'], function () {
return gulp.src(paths.libs.concat(paths.build + 'main.js')) return gulp.src(paths.libs.concat(paths.build + 'main.js'))
.pipe(uglify('all.min.js', {outSourceMap: false})) .pipe(uglify('all.min.js', {outSourceMap: false}))
.pipe(gulp.dest(paths.dist)); .pipe(gulp.dest(paths.dist));
}); });
gulp.task('minifyCss', ['less'], function () { gulp.task('minifyCss', ['less'], function () {
return gulp.src(paths.build + 'main.css') return gulp.src(paths.build + 'main.css')
.pipe(minifyCSS()) .pipe(minifyCSS())
.pipe(gulp.dest(paths.dist)) .pipe(gulp.dest(paths.dist))
}); });
gulp.task('deploy', function () { gulp.task('deploy', function () {
return gulp.src('./dist/**/*') return gulp.src('./dist/**/*')
.pipe(deploy()); .pipe(deploy());
}); });
gulp.task('default', function() { gulp.task('default', function () {
runSequence('clean', ['typescript', 'less', 'connect', 'watch'], 'open'); runSequence('clean', ['typescript', 'less', 'connect', 'watch'], ['tests', 'open']);
}); });
gulp.task('build', function() { gulp.task('build', function () {
return runSequence('clean', ['typescript', 'less', 'copy', 'minifyJs', 'minifyCss', 'processhtml']); return runSequence('clean', ['typescript', 'less', 'copy', 'minifyJs', 'minifyCss', 'processhtml']);
}); });