javascript - Any way to run a function when a gulp task is finished -
i have many gulp tasks in gulpfile, , need run function after each task done.
i handled task registration this:
var registertask = function (taskname, dependencies, todo) { if (isproduction) { gulp.task(taskname, dependencies, todo); } else { var prefixedtaskname = '_' + taskname; // original task registers here name gulp.task(prefixedtaskname, dependencies, todo); // register task after original task done gulp.task(taskname, [prefixedtaskname], myrepeatedfunction); } }
and register tasks this:
registertask('foo', [], function () { gulp .src() .pipe() ... })
but makes terminal dirty logs (underscored task names):
[15:54:17] using gulpfile ~/projects/xxx/gulpfile.js [15:54:17] starting '_default'... [15:54:17] starting '_remove-source-map'... [15:54:17] starting '_fontastic'... [15:54:28] finished '_fontastic' after 11 s [15:54:28] starting 'fontastic'... [15:54:28] finished 'fontastic' after 125 μs [15:54:28] starting '_js-hint'... [15:54:28] finished '_remove-source-map' after 11 s [15:54:28] starting 'remove-source-map'... [15:54:28] finished 'remove-source-map' after 59 μs [15:54:28] starting '_sass'... [15:54:33] finished '_sass' after 4.19 s [15:54:33] starting 'sass'... [15:54:33] finished 'sass' after 21 μs [15:54:33] finished '_js-hint' after 5.11 s [15:54:33] starting 'js-hint'... [15:54:33] finished 'js-hint' after 18 μs [15:54:33] starting '_js'... [15:54:50] finished '_js' after 17 s [15:54:50] starting 'js'... [15:54:50] finished 'js' after 17 μs [15:54:50] finished '_default' after 32 s [15:54:50] starting 'default'... [15:54:50] finished 'default' after 19 ms
i'm looking better way same thing without dirty logs (i don't want use --silent)
if there callback in gulp.task
same thing in nice way.
gulp inherits task running capabilities orchestrator
provides .on()
function register event listeners.
say have task foo
, want run function after task foo
has finished. can this:
var gulp = require('gulp'); gulp.task('foo', function() { // task stuff }); gulp.on('task_stop', function(evt) { if (evt.task == 'foo') { // stuff after task foo has finished } });
for work have make sure async tasks are signalling completion. means don't forget return streams or call callback function in async tasks!
Comments
Post a Comment