2016-10-04 2 views
1

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

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

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.

Заранее благодарен!

Cheers,

Fabio.

ответ

2

Я считаю, что наблюдатель не понимает, какие задачи он запускает.

Да, это точно так. В задаче buildEspecifico вы принимаете callback. Это означает, что gulp не будет считать вашу задачу 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 в этих задачах тоже.

+0

Hello @Sven! Большое спасибо за помощь. Я не могу удалить этот обратный вызов, потому что необходимо правильно выполнить задачи последовательно. Я попытаюсь добавить обратный вызов в последовательность и посмотреть, что произойдет. Будет обновлен поток через несколько минут. – FTM

+0

Эй @ Свен, это не сработало. Случилось так, что после того, как я внес изменения, задачи начали работать в бесконечном цикле. Например, если наблюдатель несколько раз вызывал '' buildEspecifico''. – FTM

+0

То же самое произошло, когда я попытался удалить обратный вызов. Наблюдатель продолжал называть задачу без остановки. – FTM

Смежные вопросы