Gulp 手表只运行一次
Gulp watch runs only once
我正在尝试完成我的 gulpfile.js,但我 运行 遇到了 "gulp watch" 的问题。当我将观察者设置为 运行 时,它会检测到更改和 运行 分配的任务,但只有一次。文件的下一个更改不再触发任务。我不知道为什么,但我的观察者只工作了一次。
我相信观察者没有意识到它触发的任务已经完成。或者,也许它可以处理延迟加载或我正在使用的 运行-sequence 插件...
var
gulp = require('gulp'),
plugins = require('gulp-load-plugins')({
DEBUG: true
});
plugins.runSequence = require('run-sequence');
gulp.task('watch',function(){
gulp.watch('public/**/*.+(css|js)',['buildEspecifico']);
});
gulp.task('buildEspecifico',function(callback){
return plugins.runSequence(
['deletarMainMin'],
['agruparJS','agruparCSS']
);
});
'deletarMainMin'、'agruparJS'、'agruparCSS' 是同一个 gulpfile 中定义的其他任务。
提前致谢!
干杯,
法比奥.
I believe the watcher is not realizing the tasks it triggered are finished.
是的,就是这样。在您的 buildEspecifico
任务中,您接受 callback
。这意味着 gulp 不会认为您的 buildEspecifico
任务已经完成,除非您调用 callback
.
由于您不调用 callback
,buildEspecifico
任务一旦运行就永远不会真正完成。并且因为您的 buildEspecifico
任务在技术上仍然 运行 gulp 不会在文件更改时再次启动任务。
解决方法是将callback
传递给runSequence
。当序列中的所有任务都完成时,它将调用 callback
。
gulp.task('buildEspecifico',function(callback){
return plugins.runSequence(
['deletarMainMin'],
['agruparJS','agruparCSS'],
callback
);
});
或者你也可以完全忽略回调:
gulp.task('buildEspecifico',function(){
return plugins.runSequence(
['deletarMainMin'],
['agruparJS','agruparCSS']
);
});
显然,您必须确保任务 deletarMainMin
、agruparJS
、agruparCSS
本身完成,因此也可以在这些任务中调用或省略 callback
.
我正在尝试完成我的 gulpfile.js,但我 运行 遇到了 "gulp watch" 的问题。当我将观察者设置为 运行 时,它会检测到更改和 运行 分配的任务,但只有一次。文件的下一个更改不再触发任务。我不知道为什么,但我的观察者只工作了一次。
我相信观察者没有意识到它触发的任务已经完成。或者,也许它可以处理延迟加载或我正在使用的 运行-sequence 插件...
var
gulp = require('gulp'),
plugins = require('gulp-load-plugins')({
DEBUG: true
});
plugins.runSequence = require('run-sequence');
gulp.task('watch',function(){
gulp.watch('public/**/*.+(css|js)',['buildEspecifico']);
});
gulp.task('buildEspecifico',function(callback){
return plugins.runSequence(
['deletarMainMin'],
['agruparJS','agruparCSS']
);
});
'deletarMainMin'、'agruparJS'、'agruparCSS' 是同一个 gulpfile 中定义的其他任务。
提前致谢!
干杯,
法比奥.
I believe the watcher is not realizing the tasks it triggered are finished.
是的,就是这样。在您的 buildEspecifico
任务中,您接受 callback
。这意味着 gulp 不会认为您的 buildEspecifico
任务已经完成,除非您调用 callback
.
由于您不调用 callback
,buildEspecifico
任务一旦运行就永远不会真正完成。并且因为您的 buildEspecifico
任务在技术上仍然 运行 gulp 不会在文件更改时再次启动任务。
解决方法是将callback
传递给runSequence
。当序列中的所有任务都完成时,它将调用 callback
。
gulp.task('buildEspecifico',function(callback){
return plugins.runSequence(
['deletarMainMin'],
['agruparJS','agruparCSS'],
callback
);
});
或者你也可以完全忽略回调:
gulp.task('buildEspecifico',function(){
return plugins.runSequence(
['deletarMainMin'],
['agruparJS','agruparCSS']
);
});
显然,您必须确保任务 deletarMainMin
、agruparJS
、agruparCSS
本身完成,因此也可以在这些任务中调用或省略 callback
.