gulp.watch se ejecuta solo una vez en Windows

Recién comencé a usar Gulp para mejorar mi flujo de trabajo. Actualmente tengo una tarea llamada styles que comstack files .less y una tarea llamada watch para observar los cambios en cualquier file .less y, a continuación, ejecutar la tarea de styles . Mi gulpfile.js contiene este código:

 var gulp = require( 'gulp' ), less = require( 'gulp-less' ), autoprefixer = require( 'gulp-autoprefixer' ), minifycss = require( 'gulp-minify-css' ), jshint = require( 'gulp-jshint' ), uglify = require( 'gulp-uglify' ), imagemin = require( 'gulp-imagemin' ), rename = require( 'gulp-rename' ), clean = require( 'gulp-clean' ), concat = require( 'gulp-concat' ), notify = require( 'gulp-notify' ), cache = require( 'gulp-cache' ), header = require( 'gulp-header' ), footer = require( 'gulp-footer' ); // styles task gulp.task( 'styles', function() { return gulp.src( 'src/styles/main.less' ) .pipe( less({ paths: ['src/styles/'] }) ) .pipe( autoprefixer( 'last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4' ) ) .pipe( gulp.dest( 'dist/assets/css' ) ) .pipe( rename( 'main.min.css' ) ) .pipe( minifycss() ) .pipe( gulp.dest( 'dist/assets/css' ) ) .pipe( notify({ message: 'Styles task complete' }) ); } ) (...) // watch task gulp.task('watch', function() { // Watch .less files gulp.watch('src/styles/**/*.less', function(event) { console.log('File ' + event.path + ' was ' + event.type + ', running tasks...'); gulp.run('styles'); }); }); 

El problema es que cuando ejecuto gulp watch , inicia la tarea y ejecuta la tarea de styles la primera vez que cambio un file .less . Después de la primera vez, solo obtuve el post registrado ( File X was changed, running tasks... ). ¿Estoy haciendo algo mal?

Gracias por cualquier pista o ayuda!

EDITAR

Solo información solicitada: estoy ejecutando Node.js 0.10.24 con Gulp 3.4.0 . Aquí hay una captura de pantalla de la salida del post:

Indicador de comando de nodo que ejecuta la tarea de reloj gulp

3 Solutions collect form web for “gulp.watch se ejecuta solo una vez en Windows”

Después de la sugerencia de @SteveLacy de dividir mis partes de tareas y verificar si alguna de ellas estaba causando los problemas, obtuve mi error realmente tonto que causa el error: gulp-notify funciona solo en Mac y Linux, y mi sistema operativo es Windows. De la descripción del complemento:

Envíe posts al Centro de notifications de Mac o notifications de Linux (mediante el envío de notifications) utilizando el module notificador de nodos. También puede especificar un notificador personalizado (por ejemplo, notificación Growl).

Me avergüenza.

Sigo un muy buen tutorial sobre cómo empezar a usar Gulp, y gulp-notify fue uno de los complementos utilizados en él. My mystake no prestaba atención en los detalles del complemento.

Después de eliminar gulp-notify gulpfile.js mi gulpfile.js , todo funciona como debe ser, obtuve todos los loggings correctos y mi tarea de gulp watch funciona como un amuleto.

En resumen: AWAYS comtesting la compatibilidad de un complemento con su sistema operativo.

¡Gracias a todos los que pasaron time tratando de ayudarme!

Tuve el mismo problema, y ​​el mío fue un problema de novato total. Si alguien es tan patéticamente nuevo para tragar como yo, asegúrese de que las funciones de reloj activadas finalicen con un done() :

 gulp.task("watch", function() { gulp.watch("lib/*.js, "foobar"); }); gulp.task("foobar", function(done) { // This task completion was omitted. done(); }); 

Si no recuerdo mal, gulp.run está en desuso en la versión 3.5 de Gulp. Intenta replace gulp.run(); con gulp.start(); y mira si eso funciona

  • ¿Se puede pasar una variable de Grunt a una function de JavaScript dentro de una tarea de Grunt?
  • Ejemplos que muestran las fortalezas de nodeJS
  • ¿Cuál es la diferencia entre el middleware de la aplicación y el nivel del enrutador cuando enroutes en Express?
  • El package web ignora la split del código cuando el nodo objective
  • ¿Cómo señalar EOF al nodo node de la console?
  • Javascript - Ejecute la function cada x segundos, pero solo ejecute la function 3 veces
  • ¿Cómo agrego properties temporales en un object de mongoose solo para la respuesta, que no se almacena en la database?
  • node.js expone la variable al module?
  • ¿Cómo agrupar objects con properties de marcas de time por día, semana, mes?
  • AJAX enviando datos al server Node.js
  • Evaluar la checkbox de una image escaneada en node.js
  • Cómo convertir una promise en protractor en flotador
  • Nodo js Adwords Api
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.