javascript - gulp watch
gulp-livereload recarga antes de que el proceso del servidor termine de reiniciarse (2)
Estoy configurando mi gulp.js gulpfile para ver mi directorio para cambios de archivos, y 1) recargar mi servidor express y 2) emitir un evento de "cambio" de carga en vivo para que mi navegador (con la extensión LiveReload Chrome) recargue la página que Estoy desarrollando.
Aquí está mi gulpfile:
var gulp = require(''gulp'')
, nodemon = require(''gulp-nodemon'')
, livereload = require(''gulp-livereload'');
gulp.task(''startReloadServer'', function() {
livereload.listen();
});
gulp.task(''demon'', function () {
nodemon({
script: ''server.js'',
ext: ''js html'',
env: {
''NODE_ENV'': ''development''
}
})
.on(''start'', [''startReloadServer''])
.on(''restart'', function () {
console.log(''restarted!'');
livereload.changed();
});
});
gulp.task(''default'', [''demon'']);
Sin embargo, cuando realizo un cambio en uno de mis archivos de vista (.html), mi navegador vuelve a cargar la página antes de que el proceso del servidor de nodo haya tenido la oportunidad de volver a estar en línea:
¿Cómo modifico mi gulpfile para que se emita el evento livereload.changed () después de que nodemon esté listo para recibir solicitudes?
Encontré una pregunta similar, luego escribí mi solución.
Gulp para ver cuando se invoca nodo app.listen () o para portar (livereload, nodejs y gulp)
nodemon({script: ''app.js'',
nodeArgs: [''--harmony''],
stdout: false})
.on(''readable'', function(data) {
this.stdout.on(''data'', function(chunk) {
if (/koa server listening/.test(chunk)) {
console.log(''livereload'');
livereload.reload();
}
process.stdout.write(chunk);
});
this.stderr.pipe(process.stderr);
});
También encontré este problema. Lo mejor que se me ocurrió fue retrasar la llamada a livereload.changed()
por un segundo.
nodemon.on(''restart'', function() {
setTimeout(livereload.changed, 1000);
});
documentos: setTimeout