我的 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”之后):
[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”的副本)。请注意,在上面的输出中,虽然“watcher.on”调用中的“console.log”显示在输出中,但“test-watch”任务中的“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
请注意,显示了“test-watch”任务中的“console.log”。
这是在 Windows 7 计算机上,从 cmd.exe 运行 gulp 任务。
最佳答案
支持将监视任务作为数组传递到 gulp.watch API 至少需要 gulp 3.5 版本。 gulp.watch API 仅在 gulp 版本 3.5 及更高版本中接受任务数组。
我本地的 gulp 版本是 3.4。
我将 gulp 更新到最新的 3.8 版本,并且我的监视任务工作正常。
关于javascript - gulp.watch() 未运行关联任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27933900/