A gulp plugin which serve the app with livereload, internally, it does the following:
- use
ChildProcess.spawn
to start a node process; - use
tiny-lr
provide livereload ability;
-
v0.3.0
change signature of
server.run
. the third paramlivereload
is used to config tiny-lr server. -
v0.2.0
get
console.log
back. -
v0.1.12
options.lr
is used for creating tiny-lr server.options
here is the second parameter for server.run. -
v0.1.7
change signature for server.run, split
options
intoargs
andoptions
. -
v0.1.5
pipe support added for server.notify
Run/re-run the script file, which will create a http(s) server.
Start a livereload(tiny-lr) server if it's not started yet.
Use the same arguments with ChildProcess.spawn with 'node' as command.
args
-Array
- Array List of string arguments. The default value is['app.js']
.options
-Object
- The third parameter for ChildProcess.spawn, the default value is:
options = {
cwd: undefined
}
options.env = process.env;
options.env.NODE_ENV = 'development';
livereload
-Boolean|Number|Object
- The option for tiny-lr server. The default value is35729
.false
- will disable tiny-lr livereload server.number
- treated as port number of livereload server.object
- used to create tiny-lr servernew tinylr.Server(livereload);
.
- Returns a ChildProcess instance of spawned server.
Stop the instantiated spawned server programmatically, and the tiny-lr server.
Send a notification to the tiny-lr server in order to trigger a reload on page. pipe support is added after v0.1.5, so you can also do this:
gulp.src('css/*.css')
// …
.pipe(gulp.dest('public/css/'))
.pipe(server.notify())
event
(required when server.notify is invoked without pipe) -Object
- Event object that is normally passed to gulp.watch callback. Should containpath
property with changed file path.
// gulpfile.js
var gulp = require('gulp');
var server = require('gulp-express');
gulp.task('server', function () {
// Start the server at the beginning of the task
server.run(['app.js']);
// Restart the server when file changes
gulp.watch(['app/**/*.html'], server.notify);
gulp.watch(['app/styles/**/*.scss'], ['styles:scss']);
//gulp.watch(['{.tmp,app}/styles/**/*.css'], ['styles:css', server.notify]);
//Event object won't pass down to gulp.watch's callback if there's more than one of them.
//So the correct way to use server.notify is as following:
gulp.watch(['{.tmp,app}/styles/**/*.css'], function(event){
gulp.run('styles:css');
server.notify(event);
//pipe support is added for server.notify since v0.1.5,
//see https://github.com/gimm/gulp-express#servernotifyevent
});
gulp.watch(['app/scripts/**/*.js'], ['jshint']);
gulp.watch(['app/images/**/*'], server.notify);
gulp.watch(['app.js', 'routes/**/*.js'], [server.run]);
});
// app.js
var express = require('express');
var app = module.exports.app = exports.app = express();
//you won't need 'connect-livereload' if you have livereload plugin for your browser
app.use(require('connect-livereload')());