summaryrefslogtreecommitdiff
path: root/Gruntfile.js
diff options
context:
space:
mode:
Diffstat (limited to 'Gruntfile.js')
-rw-r--r--Gruntfile.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 0000000..646900e
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,79 @@
+'use strict';
+
+var request = require('request');
+
+module.exports = function (grunt) {
+ // show elapsed time at the end
+ require('time-grunt')(grunt);
+ // load all grunt tasks
+ require('load-grunt-tasks')(grunt);
+
+ var reloadPort = 35729, files;
+
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ develop: {
+ server: {
+ file: 'bin/www'
+ }
+ },
+ watch: {
+ options: {
+ nospawn: true,
+ livereload: reloadPort
+ },
+ server: {
+ files: [
+ 'bin/www',
+ 'app.js',
+ 'routes/*.js'
+ ],
+ tasks: ['develop', 'delayed-livereload']
+ },
+ js: {
+ files: ['public/js/*.js'],
+ options: {
+ livereload: reloadPort
+ }
+ },
+ css: {
+ files: [
+ 'public/css/*.css'
+ ],
+ options: {
+ livereload: reloadPort
+ }
+ },
+ views: {
+ files: ['views/*.ejs'],
+ options: {
+ livereload: reloadPort
+ }
+ }
+ }
+ });
+
+ grunt.config.requires('watch.server.files');
+ files = grunt.config('watch.server.files');
+ files = grunt.file.expand(files);
+
+ grunt.registerTask('delayed-livereload', 'Live reload after the node server has restarted.', function () {
+ var done = this.async();
+ setTimeout(function () {
+ request.get('http://localhost:' + reloadPort + '/changed?files=' + files.join(','), function (err, res) {
+ var reloaded = !err && res.statusCode === 200;
+ if (reloaded) {
+ grunt.log.ok('Delayed live reload successful.');
+ } else {
+ grunt.log.error('Unable to make a delayed live reload.');
+ }
+ done(reloaded);
+ });
+ }, 500);
+ });
+
+ grunt.registerTask('default', [
+ 'develop',
+ 'watch'
+ ]);
+};