2017-07-26 65 views
0

我正在嘗試設置一個吞嚥手錶,當某些文件更改時會觸發吞嚥任務。爲此我使用下面的代碼: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); 
}); 

任何人都可以解釋爲什麼第一段代碼不正確執行?

+0

你有你自己的手錶功能,你打電話或打算使用gulp.watch?如果您有手錶功能,它看起來像什麼?你在那裏使用gulp-watch嗎?我們需要更多信息。 Gulp-watch可以像工作示例中那樣傳遞一個函數,但不包含任務名稱列表。 – Mark

+0

@Mark我正在使用gulp-watch。我忘了在示例中包含我的部分代碼: 'var gulp = require('gulp'); var watch = require('gulp-watch');' –

回答

0

由於您使用一飲而盡,看,如果你看一下它的功能定義:

手錶(水珠,[選項,回調])

你可以看到,這將需要一個回調這就是爲什麼你的

返回手錶(watchPath,FilesChanged);

作品和

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

沒有。吞手錶不會採取任務的陣列等gulp.watch將:

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的建議之一。

+0

感謝您的回覆。我的確瞭解了手表和手錶的功能定義。 我有正確的代碼給你的最後一個例子,但我仍然沒有得到所需的結果。 所以此工程: '看(watchPath,FilesChanged) .pipe(調試());' 但這並不: 'gulp.watch(watchPath,[ 'FilesChanged']) .pipe(調試());' –