How to get task name inside task in gulp

后端 未结 5 1159
误落风尘
误落风尘 2021-02-12 09:46

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         


        
相关标签:
5条回答
  • 2021-02-12 10:19
    gulp.task('SOMETASK',function() {
        console.log('Task name:', this.seq.slice(-1)[0]) // Task name: SOMETASK
    })
    
    0 讨论(0)
  • 2021-02-12 10:19
    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 );
    }
    
    0 讨论(0)
  • 2021-02-12 10:31
    let aCallerName = (new Error().stack.match(/ at [^(]+ /g)).map(s => s.replace(/(?: at | )/g,''));
    console.log( aCallerName ); 
    

    maybe aCallerName[0] or aCallerName[1]....

    0 讨论(0)
  • 2021-02-12 10:32

    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

    0 讨论(0)
  • 2021-02-12 10:37

    Define the task name outside of the callback and reference it where needed.

    var taskName = 'SOMETASK';
    
    gulp.task(taskName, function() {
        return gulp.src(sourcePaths)
            .pipe(plumber({errorHandler: notify.onError({
                message: "<%= error.message %>",
                title: taskName
            })}));
    });
    
    0 讨论(0)
提交回复
热议问题