Skip to content

Instantly share code, notes, and snippets.

@joepie91
Last active August 29, 2015 14:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joepie91/3c376e230d2d874340e2 to your computer and use it in GitHub Desktop.
Save joepie91/3c376e230d2d874340e2 to your computer and use it in GitHub Desktop.
Gulpfile for Express + CoffeeScript + Theseus + Nodemon + LiveReload
var gulp = require('gulp');
var path = require('path');
var gutil = require('gulp-util');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var coffee = require('gulp-coffee');
var cache = require('gulp-cached');
var remember = require('gulp-remember');
var plumber = require('gulp-plumber');
var livereload = require('gulp-livereload');
var nodemon = require("gulp-nodemon");
var net = require("net");
gulp.task('coffee', function() {
task = {
"source": ["public/**/*.coffee", "routes/**/*.coffee", "models/**/*.coffee", "app.coffee", "util.coffee"]
}
return gulp.src(task.source, {base: "."})
.pipe(plumber())
.pipe(cache("coffee"))
.pipe(coffee({bare: true}).on('error', gutil.log)).on('data', gutil.log)
.pipe(remember("coffee"))
.pipe(gulp.dest("."));
});
function checkServerUp(){
setTimeout(function(){
var sock = new net.Socket();
sock.setTimeout(50);
sock.on("connect", function(){
console.log("Trigger page reload...");
livereload.changed();
sock.destroy();
})
.on("timeout", checkServerUp)
.on("error", checkServerUp)
.connect(3000);
}, 70);
}
gulp.task('watch', function () {
livereload.listen();
gulp.watch(['./**/*.css', 'views/**/*.jade', 'package.json']).on('change', livereload.changed);
gulp.watch(['public/**/*.coffee', 'routes/**/*.coffee', 'models/**/*.coffee', "app.coffee", "util.coffee"], ['coffee']);
nodemon({script: "./bin/www", ext: "js", nodeArgs: ['/usr/bin/node-theseus']}).on("start", checkServerUp);
});
gulp.task('default', ['coffee', 'watch']);
# You'll need these in your package.json. At least one of these dependencies has a newer
# version that will break the Gulpfile, so make sure you add *exactly* this list.
...
"devDependencies": {
"gulp": "~3.8.0",
"gulp-livereload": "~2.1.0",
"gulp-nodemon": "~1.0.4",
"gulp-util": "~2.2.17",
"gulp-concat": "~2.2.0",
"gulp-rename": "~1.2.0",
"gulp-coffee": "~2.0.1",
"gulp-cached": "~0.0.3",
"gulp-remember": "~0.2.0",
"gulp-plumber": "~0.6.3"
}
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment