var gulp = require('gulp'); var coffee = require('gulp-coffee'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); var imagemin = require('gulp-imagemin'); var sourcemaps = require('gulp-sourcemaps'); var del = require('del'); var jade = require('gulp-jade'); var paths = { scripts: ['src/js/**/*.coffee'], images: ['src/**/*.png', 'src/**/*.ico'], vendor: 'bower_components/**/*.js', templates: 'src/**/*.jade' }; gulp.task('clean', function(cb) { del(['dst'], cb); }); gulp.task('scripts', [], function() { return gulp.src(paths.scripts) .pipe(coffee()) .pipe(uglify()) .pipe(concat('all.min.js')) .pipe(sourcemaps.write()) .pipe(gulp.dest('dst/js')); }); gulp.task('scripts_dev', [], function() { return gulp.src(paths.scripts) .pipe(sourcemaps.init()) .pipe(coffee()) .pipe(concat('all.min.js')) .pipe(sourcemaps.write()) .pipe(gulp.dest('dst/js')); }); gulp.task('vendor', [], function() { return gulp.src( paths.vendor ) .pipe(gulp.dest('dst/js/')); }); // Copy all static images gulp.task('images', [], function() { return gulp.src(paths.images) // Pass in options to the task .pipe(imagemin({optimizationLevel: 5})) .pipe(gulp.dest('dst')); }); // Copy all templates gulp.task('templates', [], function() { return gulp.src(paths.templates) .pipe(jade({ pretty: true })) .pipe(gulp.dest('dst')); }); // execute server gulp.task('express_dev', function() { var express = require('express'); var app = express(); app.use(require('connect-livereload')({port: 4002})); app.use(express.static(__dirname + '/dst')); app.listen(4000); }); gulp.task('express', function() { var express = require('express'); var app = express(); app.use(express.static(__dirname + '/dst')); app.listen(8080); }); // Live reload var tinylr; gulp.task('livereload', function() { tinylr = require('tiny-lr')(); tinylr.listen(4002); }); function notifyLiveReload(event) { var fileName = require('path').relative(__dirname, event.path); setTimeout(function(){ tinylr.changed({ body: { files: [fileName] } }); }, 100) } // Rerun the task when a file changes gulp.task('watch', function() { gulp.watch(paths.scripts, function( event ){ gulp.run('scripts'); notifyLiveReload(event); }); gulp.watch(paths.images, function( event ){ gulp.run('images'); notifyLiveReload(event); }); gulp.watch(paths.templates, function( event ){ gulp.run('templates'); notifyLiveReload(event); }); }); // The default task (called when you run `gulp` from cli) gulp.task('default', ['scripts', 'vendor', 'images', 'templates']); gulp.task('dev', ['express_dev', 'livereload', 'default', 'scripts_dev', 'watch']); gulp.task('serve', ['express', 'default']);