Gulp观看回调任务没有解雇

时间:2017-07-26 09:02:37

标签: node.js gulp gulp-watch gulp-task

我正在尝试设置一个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'任务会触发,我会在控制台中看到“Files changed:”文本。这不会发生。

当我将watchChanges任务更改为:

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

    return watch(watchPath, FilesChanged);
});

任何人都可以解释为什么第一段代码没有正确执行吗?

1 个答案:

答案 0 :(得分:0)

如果您查看其功能定义,则使用gulp-watch:

  

观察(glob,[options,callback])

你可以看到它将需要一个回调函数,这就是你

的原因
  

返回观察(watchPath,FilesChanged);

有效,

  

返回观察(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']);
});

如果您要查看正在处理的文件,请尝试get the current file name中的一项建议。