Mikou
Mikou

Reputation: 651

gulp-express notify livereload

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

Answers (1)

Sergey P.
Sergey P.

Reputation: 194

Try to change this:

server.run(['./src/server/index.js'], {}, 35729);

Upvotes: 1

Related Questions