gulp.watch()没有运行相关任务

时间:2015-01-14 00:19:10

标签: javascript windows gulp watch

我的gulpfile.js中有以下代码:

gulp.task('test-watch', function () {
    console.log('running test-watch...');

    return gulp.src('./views/layout.tmpl')
        .pipe(rename('layout.html'))
        .pipe(gulp.dest('./views/'));
});

gulp.task('watch', function () {
    var watcher = gulp.watch('./views/layout.tmpl', ['test-watch']);
    watcher.on('change', function (event) {
        console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
    });
});

它会产生以下输出(在编辑/保存" layout.tmpl&#34之后出现最后一行):

[15:53:12] Using gulpfile C:\project1\gulpfile.js
[15:53:12] Starting 'watch'...
[15:53:12] Finished 'watch' after 6.72 ms
File C:\project1\views\layout.tmpl was changed, running tasks...

文件" layout.html" (它应该是" layout.tmpl"的副本)不会被创建。注意,在上面输出的同时" console.log"在" watcher.on"调用显示在输出中," console.log"在"测试手表"任务未显示。如果我直接运行测试监视任务,则会创建该文件。

如果我直接运行测试监视任务,则输出如下:

[15:53:56] Using gulpfile C:\project1\gulpfile.js
[15:53:56] Starting 'test-watch'...
running test-watch...
[15:53:56] Finished 'test-watch' after 12 ms

请注意" console.log"在"测试手表"任务显示。

这是在Windows 7计算机上,从cmd.exe运行gulp任务。

1 个答案:

答案 0 :(得分:1)

支持将监视任务传递给gulp.watch API作为数组至少需要gulp版本3.5。 gulp.watch API仅在gulp版本3.5及更高版本中接受一系列任务。

我的本​​地吞咽是版本3.4。

我更新了gulp到最新的3.8版本,我的监视任务正常工作。