español - npm gulp
Gulp Watch solo corre una vez (3)
Este problema me volvió loco por un fin de semana. Lo intenté todo:
- Añadir hecho () - Evento
- Renombrar / Tocar / Borrar CSS objetivo
- Sé más específico con los filepaths.
Pero la (razón de este problema y) la solución fue tan fácil que me sentí patético después de eso:
Solo actualiza tu instalación de nodejs , la mía era 0.12.x! No es de extrañar que esto no funcione.
Después de eso el evento reloj vuelve a funcionar. A veces también sale mal otra vez. Pero en este caso, simplemente guarde su archivo por segunda vez y se reconocerá. (Creo que foundation/gulp watch
comprueba si los cambios son rápidos y mientras su archivo se reemplaza con el nuevo cargado)
Estoy usando este ejemplo de Gulp Watch: https://github.com/floatdrop/gulp-watch/blob/master/docs/readme.md#starting-tasks-on-events .
var gulp = require(''gulp'');
var watch = require(''gulp-watch'');
var batch = require(''gulp-batch'');
gulp.task(''build'', function () { console.log(''Working!''); });
gulp.task(''watch'', function () {
watch(''**/*.js'', batch(function () {
gulp.start(''build'');
}));
});
Cuando lo ejecuto en mi máquina con Windows 8, solo se ejecuta la primera vez que cambio un archivo:
C:/test>gulp watch
[08:40:21] Using gulpfile C:/test/gulpfile.js
[08:40:21] Starting ''watch''...
[08:40:21] Finished ''watch'' after 2.69 ms
[08:40:31] Starting ''build''...
Working!
[08:40:31] Finished ''build'' after 261 µs
La próxima vez no pasa nada. ¿Por qué?
Si lees la documentación detenidamente, verás la siguiente frase:
Puede pasar la devolución de llamada simple, que se llamará en cada evento o envolverla en un buen trago para ejecutarlo una vez
Entonces, ese es básicamente el trato con gulp-batch
. Para verlo constantemente, simplemente elimine la llamada por lotes:
gulp.task(''build'', function (done) {
console.log(''Working!'');
done();
});
gulp.task(''watch'', function () {
watch(''app/*.js'', function () {
gulp.start(''build'');
});
});
(y agregue la devolución de llamada ''hecho'' a la build
para avisarle a Gulp cuando haya terminado).
Por cierto ... no estoy seguro, pero creo que gulp-watch
no solo es para ver archivos, sino también para devolver directamente un objeto de vinilo. Entonces, en realidad, usar el gulp.watch
debería tener el mismo efecto:
gulp.task(''watch'', function () {
gulp.watch(''app/**/*.js'', [''build'']);
});
Tuve el mismo problema y usé lo mismo que ddprrt. La diferencia fue usar el comodín del directorio como se adjunta a la ruta absoluta.
Cambié esto:
gulp.task(''watch'', function() {
gulp.watch(''sass/shortcutcss/*.scss'', [''sass''])
});
a esto:
gulp.task(''watch'', function() {
gulp.watch(''sass/**/*.scss'', [''sass''])
});