Задание обратного вызова глотка часов не стреляет

Я пытаюсь настроить часы gulp, которые запускают задачу gulp при изменении некоторых файлов. Для этого я использую следующий код:

gulp.task('watchChanges', function(cb){
    console.log("Looking for file changes in " + watchPath+".");  

    return watch(watchPath, ['FilesChanged']);
});

gulp.task('FilesChanged', function (cb){
    FilesChanged();
    cb();
})

function FilesChanged()
{
    console.log("Files changed:")
}

Всякий раз, когда файлы меняются, мне бы хотелось, чтобы запускалась задача FilesChanged, и я видел бы текст "Файлы изменены:" в консоли. Этого не происходит

Когда я меняю задачу watchChanges на следующую:

gulp.task('watchChanges', function(cb){
    console.log("Looking for file changes in " + watchPath+".");  

    return watch(watchPath, FilesChanged);
});

Может кто-нибудь объяснить, почему первый кусок кода не выполняется правильно?

1 ответ

Since you are using gulp-watch if you look at its function definition:

watch(glob, [options, callback])

you can see that it will take a callback function which is why your

return watch(watchPath, FilesChanged);

works and

return watch(watchPath, ['FilesChanged']);

не. gulp-watch не будет выполнять множество задач, таких как gulp.watch:

gulp.watch (glob [, opts], tasks)

gulp-watch и gulp.watch - это две совершенно разные вещи. То, что вы, вероятно, хотите

gulp.task('watchChanges', function(cb){
    console.log("Looking for file changes in " + watchPath+".");  

    gulp.watch(watchPath, ['FilesChanged']);
});

Если вы хотите увидеть, какие файлы обрабатываются, попробуйте одно из предложений, чтобы получить текущее имя файла.

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