Reputation: 651
I am using gulp-express to run an express server from gulpfile.js. I create the express server in ./src/server/index.js
In the server settings I specify app.use(require('connect-livereload')());
to enable livereload in the browser
In gulpfile, I specify that at anytime a modification is made to ./src/client/libs/**/*.js
the task client:libs
should be run and ultimately livereload should be notified .pipe(server.notify)
With these settings, I would expect my browser to be automatically refreshed when a change is made in ./src/client/libs/**/*.js
. But for some reason, it doesn't work. Can anyone see my mistake? The relevant parts of my files can be found bellow.
Thanks in advance
./gulpfile.js:
var browserify = require('browserify');
var buffer = require('vinyl-buffer')
var gulp = require('gulp');
var server = require('gulp-express');
var source = require('vinyl-source-stream');
var sourcemaps = require('gulp-sourcemaps');
var uglify = require('gulp-uglify');
var packageJson = require('./package.json');
var dependencies = Object.keys(packageJson && packageJson.dependencies || {});
gulp.task('client:libs', function () {
var b = browserify();
return b
.external(dependencies)
.require('./src/client/libs/app.js')
.bundle()
.pipe(source('libs.js'))
.pipe(buffer())
.pipe(sourcemaps.init())
.pipe(uglify())
.on('error', gutil.log)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./build/js'))
.pipe(server.notify())
});
gulp.task('client:index', function ()
return gulp.src('./src/client/index.html')
.pipe(gulp.dest('./build'));
});
gulp.task('server', function () {
server.run(['./src/server/index.js']);
gulp.watch(['./src/client/index.html'], ['client:index']);
gulp.watch(['./src/client/libs/**/*.js'], ['client:libs']);
});
./src/server/index.js
var express = require('express');
//var app = express();
var app = module.exports.app = exports.app = express();
app.use('/', express.static('build'));
app.use(require('connect-livereload')());
var server = app.listen(3000, '127.0.0.1', function () {
var host = server.address().address;
var port = server.address().port;
console.log('App is listening at http://%s:%s', host, port);
});
Upvotes: 0
Views: 215
Reputation: 194
Try to change this:
server.run(['./src/server/index.js'], {}, 35729);
Upvotes: 1