please use gulp-live-server instead, it's a new version of
gulp-express
with a better name and new features.
===
!Build Status12 !Livereload downloads34 !Tag98 !MIT Licensed5
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;
Install

Update notice
- v0.3.0
> change signature of `server.run`. the third param `livereload` 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](#serverrunargsoptions).
- v0.1.7
> change signature for [server.run](#serverrunargsoptions), split `options` into `args` and `options`.
- v0.1.5
> pipe support added for [server.notify](#servernotifyevent)
API
server.run(args,options,livereload)
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:
cwd: undefined
}
options.env = process.env;
options.env.NODEENV = '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 server `new tinylr.Server(livereload);`.
- Returns a ChildProcess instance of spawned server.
server.stop()
Stop the instantiated spawned server programmatically, and the tiny-lr server.server.notify(event)
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: ```js 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.
path
property with changed file path.
Usage
```js // 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]);
});
```
```js
// 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')());
```