easy-livereload

This is yet another library to use livereload
very easily for express/node.js-based development.
It is express middleware which provides both
a livereload server and a javascript client.
It is designed to be used with
node-dev
so that restarting a server process is also possible.
The major features of this library include:
- using livereload (PROTOCOL 7) server code from the original author,
- using livereload.js client code from the original author,
- using fs.watch() to check file changes instantly,
- allowing to automatically restart server code (if invoked with node-dev), and
- all-in-one package to enable with at least one-line code.
Install
npm install easy-livereload node-dev
Usage
Minimal configuration:
app.use(require('easy-livereload')());
Typical configuration:
var path = require('path');
var express = require('express');
var app = express();
if (app.get('env') === 'development') {
var livereload = require('easy-livereload');
var file_type_map = {
jade: 'html',
styl: 'css',
scss: 'css',
sass: 'css',
less: 'css'
};
var file_type_regex = new RegExp('\\.(' + Object.keys(file_type_map).join('|') + ')$');
app.use(livereload({
watchDirs: [
path.join(__dirname, 'public'),
path.join(__dirname, 'app')
],
checkFunc: function(file) {
return file_type_regex.test(file);
},
renameFunc: function(file) {
return file.replace(file_type_regex, function(extention) {
return '.' + file_type_map[extention.slice(1)];
});
},
port: process.env.LIVERELOAD_PORT || 35729
}));
}
By default this script tries to load the live reload script itself,
but if that doesn't work for some reason then you can put your app
into the easy-livereload
options.
This will add a local variable to your app
under app.locals.LRScript
.
var express = require('express');
var app = express();
var livereload = require('easy-livereload');
if (app.get('env') === 'development') {
app.use(livereload({
app: app
}));
}
doctype html
html(lang="en")
head
title Livereload
!= LRScript //- loads the livereload script
Example scripts entry in package.json
:
"scripts": {
"start": "NODE_ENV=production node app.js",
"start-dev": "NODE_ENV=development node-dev app.js"
}