0

我正在尝试设置一个 gulp-watch,它会在某些文件更改时触发 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);
});

谁能解释为什么第一段代码不能正确执行?

4

1 回答 1

0

由于您使用的是 gulp-watch,如果您查看它的函数定义:

观看(glob,[选项,回调])

你可以看到它需要一个回调函数,这就是为什么你的

返回手表(watchPath,FilesChanged);

作品和

返回手表(watchPath,['FilesChanged']);

才不是。gulp-watch 不会像 gulp.watch 那样执行一系列任务:

gulp.watch(glob[, opts], 任务)

gulp-watch 和 gulp.watch 是两个完全不同的东西。你可能想要的是

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

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

如果您随后要查看正在处理哪些文件,请尝试获取当前文件名中的建议之一。

于 2017-07-27T18:48:49.800 回答