Запуск задачи из события .on () gulp-watch - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь настроить процесс наблюдения в gulp, который принимает измененный файл в качестве параметра.

Я попытался использовать хук ".on ('change' ...)" из gulp.watch (), так как не существует другого способа получить полный путь к файлучто вызвало событие часов.Это позволяет мне получить доступ к файлу, который был изменен, но я не могу понять, как выполнить задачу на этом этапе.В другом месте я читал, что gulp.start () работал, но в gulp 4.0 эта функциональность, похоже, была удалена.

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

Это урезанная версия того, что я использую:

gulp.task("watch", function() {
    return gulp.watch("<path and filemask to watch>")
        .on("change", function(file) {
            runTaskHere(file);
        })
}

Я могу запустить этот наблюдатель через "gulp watch"в командной строке, а затем измените файл, который является частью пути и файловой маски.Это все отлично работает.Я могу распечатать параметр файла, и это правильно.Я просто не могу заставить задачу выполнить с этого момента.Если я немного переключу код, чтобы вместо анонимной функции использовался конвейер gulp.series (), задача выполнялась, как и ожидалось, но у меня нет доступа к пути и имени файла измененного файла.

По сути, я пытаюсь вручную запустить задачу gulp из gulpfile.js на основе информации о пути к измененному файлу и запустить ее по существу из функции-оболочки (.on (...) крючок от вахты).Я понимаю, что дизайнеры gulp пытались уйти от этого паттерна, но все еще есть случаи, когда я не вижу альтернативы этому.Если невозможно достичь того, что я здесь делаю, есть ли в gulp какие-либо другие варианты, позволяющие добиться того, что я пытаюсь сделать здесь?

Является ли мой единственный вариант создания часов для каждого каталога (на основе моих правил синтаксического анализа) и забыли о попытке прочитать информацию о пути?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Поскольку задачи gulp - это просто функции, почему бы и нет:

 function mytask() {
   // do something here
}

gulp.task("sometask", mytask)

Затем вы можете позже запустить свою задачу, просто вызвав функцию ...

on("change", function(file) {
        mytask(file);
} 
0 голосов
/ 28 декабря 2018

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

...