确定是否从另一个任务调用Gulp任务

确定是否从另一个任务调用Gulp任务,gulp,Gulp,有没有办法确定一个任务是直接调用的还是从另一个任务调用的 runSequence = require 'run-sequence' gulp.task 'build', -> .... gulp.task 'run', -> runSequence 'build', -> gulp.start('server') 我需要一个if案例,在build任务中说明: 如果它被直接调用-(gulpbuild),那么做一些事情 或者,如果它是从run任

有没有办法确定一个任务是直接调用的还是从另一个任务调用的

  runSequence = require 'run-sequence'

  gulp.task 'build', ->
     ....

  gulp.task 'run', ->
     runSequence 'build', -> gulp.start('server')
我需要一个
if
案例,在
build
任务中说明: 如果它被直接调用-(
gulpbuild
),那么做一些事情

或者,如果它是从
run
任务调用的,则执行其他操作

这可能是一个错误。你到底想完成什么

但是要回答这个问题;我认为唯一的方法是查看调用堆栈跟踪,确保只有Gulp接触到任务。我编写了一个函数来查找是谁安排了任务。您只需将函数与
gulpfile.js
内联,并像布尔函数一样使用它

以下代码依赖于,因此请确保
npm安装解析堆栈

用法:
if(wasGulpTaskCalledDirectly()){/*…*/}

function wasGulpTaskCalledDirectly()
{
    var parseStack = require("parse-stack");

    var stack = parseStack(new Error());

    // Find the index in the call stack where the task was started
    var stackTaskStartIndex = -1;
    for(var i = 0; i < stack.length; i++)
    {
        if(stack[i].name == 'Gulp.Orchestrator.start')
        {
            stackTaskStartIndex = i;
            break;
        }
    }

    // Once we find where the orchestrator started the task
    // Find who called the orchestrator (one level up)
    var taskStarterIndex = stackTaskStartIndex+1;
    var isValidIndex = taskStarterIndex > 0 && taskStarterIndex < stack.length;
    if(isValidIndex && /gulp\.js$/.test((stack[taskStarterIndex].filepath || "")))
    {
        return true;
    }

    return false;
}

哇!真是太神奇了。。。我不知道这东西做什么,但我觉得它很棒…嗯。。。我想要完成什么?我不知道。。。我有时确实使我自己的生活复杂化。我不知道这不是一个容易的问题。我还是很好奇