0

我有一个函数,我想只使用 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() 相同的输出和错误处理?

4

1 回答 1

0

在监视回调中使用您的函数,而不是将其附加到 chokidar 实例。

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

根据最新的 watch 文档,当您直接访问 chokidar 实例时,就像您在使用时所做的那样on('change',...),您失去了大部分任务系统集成。

于 2018-10-25T08:30:52.810 回答