Gulp watcher - вызов функций для одного файла - PullRequest
0 голосов
/ 22 октября 2018

У меня есть функция, которую я хочу применить только к измененному файлу с помощью gulp 4.0 watcher, например, текущая задача будет:

gulp.watch([
    paths.sourceFolder + "/**/*.js",
    paths.sourceFolder + "/**/*.html",
    paths.sourceFolder + "/**/*.less",
    paths.lessFolder + "/**/*.less",
], {}

).on('change', gulp.series(lint));

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

gulp.watch([
    paths.sourceFolder + "/**/*.js",
    paths.sourceFolder + "/**/*.html",
    paths.sourceFolder + "/**/*.less",
    paths.lessFolder + "/**/*.less",
], {}).on('change', (path) => {
    lint(someDoneFunction, path)
});

Как я могу сделатьэта функция запускается для одного файла и сохраняет те же выходные данные и обработку ошибок, что и при использовании gulp.series ()?

1 Ответ

0 голосов
/ 25 октября 2018

Используйте свою функцию в обратном вызове часов вместо того, чтобы прикреплять ее к экземпляру chokidar.

gulp.watch(
    [
        paths.sourceFolder + "/**/*.js",
        paths.sourceFolder + "/**/*.html",
        paths.sourceFolder + "/**/*.less",
        paths.lessFolder + "/**/*.less",
    ],
    gulp.series(lint, something, somethingElse)
);

Согласно последней документации по часам , когда вы обращаетесь к экземпляру chokidar напрямую, каквы делаете, когда вы используете on('change',...), вы теряете большую часть интеграции системы задач.

...