Часы Gulp работают только один раз

Я пытаюсь закончить свой gulpfile.js, но у меня проблема с "gulp watch". Когда я запускаю мой наблюдатель, он обнаруживает изменения и запускает назначенную задачу, но только один раз. Следующие изменения в файлах больше не запускают задачи. Я не знаю почему, но мой наблюдатель работает только один раз.

Я считаю, что наблюдатель не понимает, что вызванные им задачи завершены. Или, может быть, это что-то, чтобы иметь дело с ленивыми плагинами загрузки или последовательности выполнения, которые я использую...

var
  gulp = require('gulp'),
  plugins = require('gulp-load-plugins')({
    DEBUG: true
  });
plugins.runSequence = require('run-sequence');

gulp.task('watch',function(){
  gulp.watch('public/**/*.+(css|js)',['buildEspecifico']);
});

gulp.task('buildEspecifico',function(callback){
  return plugins.runSequence(
    ['deletarMainMin'],
    ['agruparJS','agruparCSS']
  );
});

'deletarMainMin', 'agruparJS', 'agruparCSS' - это другие задачи, определенные в том же файле gulpfile.

Заранее спасибо!

Ура,

Фабио.

1 ответ

Решение

Я считаю, что наблюдатель не понимает, что вызванные им задачи завершены.

Да, это именно так. В вашем buildEspecifico задание вы принимаете callback, Это означает, что глоток не будет учитывать ваши buildEspecifico задание завершено, если вы не вызовете это callback,

Так как вы не вызываете callback buildEspecifico Задача никогда не заканчивается на самом деле, как только она запускается. И потому что ваш buildEspecifico технически задание все еще выполняется, gulp не запускает задание снова при изменении файла.

Решение состоит в том, чтобы пройти callback в runSequence, Это вызовет callback когда все ваши задачи в последовательности завершены.

gulp.task('buildEspecifico',function(callback){
  return plugins.runSequence(
    ['deletarMainMin'],
    ['agruparJS','agruparCSS'],
    callback
  );
});

В качестве альтернативы вы также можете просто пропустить обратный вызов:

gulp.task('buildEspecifico',function(){
  return plugins.runSequence(
    ['deletarMainMin'],
    ['agruparJS','agruparCSS']
  );
});

Очевидно, вы должны убедиться, что задачи deletarMainMin, agruparJS, agruparCSS сами заканчивайте, так что либо позвоните, либо пропустите callback в этих задачах тоже.

Другие вопросы по тегам