Часы 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
в этих задачах тоже.