I\'m using gulp-plumber + gulp-notify and want to put task name in gulp-notify as a title. following is the code i wrote, thanks in advance.
gulp.task(\'SOMETASK
gulp.Gulp.prototype.__runTask = gulp.Gulp.prototype._runTask;
gulp.Gulp.prototype._runTask = function(task) {
this.currentTask = task;
this.__runTask(task);
}
gulp.task("someTask", function(){
console.log( this.currentTask.name );
}
If you want to monkey-patch Gulp, the following will work with Gulp version 3.9.0
:
var _gulpStart = gulp.Gulp.prototype.start;
var _runTask = gulp.Gulp.prototype._runTask;
gulp.Gulp.prototype.start = function (taskName) {
this.currentStartTaskName = taskName;
_gulpStart.apply(this, arguments);
};
gulp.Gulp.prototype._runTask = function (task) {
this.currentRunTaskName = task.name;
_runTask.apply(this, arguments);
};
gulp.task('jscs', function () {
console.log('this.currentStartTaskName: ' + this.currentStartTaskName);
console.log('this.currentRunTaskName: ' + this.currentRunTaskName);
});
gulp.task('jshint', function () {
console.log('this.currentStartTaskName: ' + this.currentStartTaskName);
console.log('this.currentRunTaskName: ' + this.currentRunTaskName);
});
gulp.task('build', ['jshint', 'jscs']);
Running gulp build
will yield the following console output:
c:\project>gulp build
[16:38:54] Using gulpfile c:\project\gulpfile.js
[16:38:54] Starting 'jshint'...
this.currentStartTaskName: build
this.currentRunTaskName: jshint
[16:38:54] Finished 'jshint' after 244 μs
[16:38:54] Starting 'jscs'...
this.currentStartTaskName: build
this.currentRunTaskName: jscs
[16:38:54] Finished 'jscs' after 152 μs
[16:38:54] Starting 'build'...
[16:38:54] Finished 'build' after 3.54 μs
let aCallerName = (new Error().stack.match(/ at [^(]+ /g)).map(s => s.replace(/(?: at | )/g,''));
console.log( aCallerName );
maybe aCallerName[0] or aCallerName[1]....
gulp.task('SOMETASK',function() {
console.log('Task name:', this.seq.slice(-1)[0]) // Task name: SOMETASK
})