1
0
Fork 0
spacetac/gulpfile.js

127 lines
3.6 KiB
JavaScript
Raw Normal View History

2014-12-28 00:00:00 +00:00
var gulp = require('gulp'),
2015-01-07 00:00:00 +00:00
ts = require('gulp-typescript'),
concat = require('gulp-concat-sourcemap'),
sourcemaps = require('gulp-sourcemaps'),
processhtml = require('gulp-processhtml'),
connect = require('gulp-connect'),
karma = require('gulp-karma'),
2015-01-07 00:00:00 +00:00
tslint = require('gulp-tslint'),
2015-01-07 00:00:00 +00:00
open = require('gulp-open'),
del = require('del'),
uglify = require('gulp-uglifyjs'),
deploy = require('gulp-gh-pages'),
runSequence = require('run-sequence');
2014-12-28 00:00:00 +00:00
var paths = {
2015-01-07 00:00:00 +00:00
assets: 'src/assets/**/*',
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',
2015-04-07 00:00:00 +00:00
'src/vendor/phaser/build/phaser.min.js'
2015-01-07 00:00:00 +00:00
],
2015-03-24 00:00:00 +00:00
ts: 'src/app/**/*.ts',
2015-01-07 00:00:00 +00:00
build: './build/',
dist: './dist/'
2014-12-28 00:00:00 +00:00
};
gulp.task('clean', function (cb) {
2015-01-07 00:00:00 +00:00
return del([paths.build, paths.dist], cb);
2014-12-28 00:00:00 +00:00
});
gulp.task('copy', function () {
2015-01-07 00:00:00 +00:00
return gulp.src(paths.assets)
.pipe(gulp.dest(paths.dist + 'assets'));
2014-12-28 00:00:00 +00:00
});
var tsProject = ts.createProject({
2015-01-07 00:00:00 +00:00
declarationFiles: true,
noExternalResolve: true,
noImplicitAny: false, // Handled by tslint
2015-01-07 00:00:00 +00:00
sortOutput: true,
2015-03-24 00:00:00 +00:00
sourceRoot: '../app'
2014-12-28 00:00:00 +00:00
});
gulp.task('typescript', function () {
2015-01-07 00:00:00 +00:00
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));
2014-12-28 00:00:00 +00:00
});
2015-01-07 00:00:00 +00:00
gulp.task('tests', ['typescript'], function () {
return gulp.src(paths.libs + [paths.build + 'main.js'])
.pipe(karma({configFile: 'karma.conf.js', action: 'run'}))
2014-12-28 00:00:00 +00:00
});
2015-01-07 00:00:00 +00:00
gulp.task('tslint', function () {
2015-03-24 00:00:00 +00:00
return gulp.src(['src/app/game/**/*.ts', 'src/app/view/**/*.ts'])
2015-01-07 00:00:00 +00:00
.pipe(tslint())
.pipe(tslint.report('verbose', {
emitError: false
}));
});
gulp.task('tslintstrict', function () {
2015-03-24 00:00:00 +00:00
return gulp.src(['src/app/game/**/*.ts', 'src/app/view/**/*.ts'])
.pipe(tslint())
.pipe(tslint.report('verbose'));
});
2015-01-07 00:00:00 +00:00
2014-12-28 00:00:00 +00:00
gulp.task('processhtml', function () {
2015-01-07 00:00:00 +00:00
return gulp.src(paths.index)
.pipe(processhtml())
.pipe(gulp.dest(paths.dist));
2014-12-28 00:00:00 +00:00
});
gulp.task('reload', ['typescript'], function () {
2015-01-07 00:00:00 +00:00
gulp.src('src/*.html')
.pipe(connect.reload());
2014-12-28 00:00:00 +00:00
});
gulp.task('watch', function () {
2015-01-07 00:00:00 +00:00
gulp.watch(paths.ts, ['typescript', 'tslint', 'tests', 'reload']);
2015-01-07 00:00:00 +00:00
gulp.watch(paths.less, ['less', 'reload']);
gulp.watch(paths.index, ['reload']);
2014-12-28 00:00:00 +00:00
});
gulp.task('connect', function () {
2015-01-07 00:00:00 +00:00
connect.server({
root: [__dirname + '/src', paths.build],
port: 9000,
livereload: true
});
2014-12-28 00:00:00 +00:00
});
gulp.task("open", function () {
2015-01-07 00:00:00 +00:00
gulp.src(paths.index)
.pipe(open("", {url: "http://localhost:9000"}));
2014-12-28 00:00:00 +00:00
});
gulp.task('minifyJs', ['typescript'], function () {
2015-01-07 00:00:00 +00:00
return gulp.src(paths.libs.concat(paths.build + 'main.js'))
.pipe(uglify('all.min.js', {outSourceMap: false}))
.pipe(gulp.dest(paths.dist));
2014-12-28 00:00:00 +00:00
});
gulp.task('deploy', function () {
2015-01-07 00:00:00 +00:00
return gulp.src('./dist/**/*')
2015-01-16 00:00:00 +00:00
.pipe(deploy({
remoteUrl: "git@github.com:thunderk/spacetac.git"
2015-01-16 00:00:00 +00:00
}));
2014-12-28 00:00:00 +00:00
});
2015-01-07 00:00:00 +00:00
gulp.task('default', function () {
runSequence('clean', ['typescript', 'tslint', 'connect', 'watch'], ['tests', 'open']);
2014-12-28 00:00:00 +00:00
});
2015-01-07 00:00:00 +00:00
gulp.task('build', function () {
return runSequence('clean', ['typescript', 'tslint', 'copy', 'minifyJs', 'processhtml']);
2014-12-28 00:00:00 +00:00
});
gulp.task('strict', function () {
return runSequence('clean', ['typescript', 'tslintstrict', 'tests']);
});