Javascript 从另一个任务访问Grunt当前任务

Javascript 从另一个任务访问Grunt当前任务,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,假设我有一个任务,myCustomTask被另一个任务调用,quick grunt.registerTask('myCustomTask', function(){ if(this.nameArgs === 'quick'){ console.log('ignoring task...'); return; }else{ grunt.task.run('my-custom-task'); } }); 我希望myCustom

假设我有一个任务,
myCustomTask
被另一个任务调用,
quick

grunt.registerTask('myCustomTask', function(){
    if(this.nameArgs === 'quick'){
        console.log('ignoring task...');
        return;
    }else{
        grunt.task.run('my-custom-task');
    }
});
我希望
myCustomTask
grunt quick
忽略,而不将其从
quick
任务中删除

grunt.registerTask('quick', [
    'task1',
    'task2',
    'myCustomTask'
]);
我希望当任务作为
grunt quick
运行时,
this.nameArgs===“quick”
会触发,但它会跳过该操作并到达else块。换句话说,只有当我们使用
this.nameArgs===“myCustomTask”

如何将当前正在调用自定义任务的任务作为目标,以便我可以告诉它忽略它?

您尝试过吗

我认为你可以做到以下几点:

grunt.registerTask('myCustomTask', function(mode) {
    if (mode == 'quick') {
        console.log('ignoring task...');
        return;
    }
    grunt.task.run('my-custom-task');
});
var taskSettings = {};

grunt.registerTask('task1', function() {
    console.log('task 1');
});
grunt.registerTask('task2', function() {
    if ('quick' == taskSettings.origin) {
        console.log('skip task 2');
    } else {
        console.log('task 2');
    }
});
grunt.registerTask('quick', function () {
    taskSettings.origin = this.name;
    grunt.task.run('task1', 'task2');
});
更新

如果要排除已运行某些任务的任务执行,则可以执行以下操作:

grunt.registerTask('myCustomTask', function(mode) {
    if (mode == 'quick') {
        console.log('ignoring task...');
        return;
    }
    grunt.task.run('my-custom-task');
});
var taskSettings = {};

grunt.registerTask('task1', function() {
    console.log('task 1');
});
grunt.registerTask('task2', function() {
    if ('quick' == taskSettings.origin) {
        console.log('skip task 2');
    } else {
        console.log('task 2');
    }
});
grunt.registerTask('quick', function () {
    taskSettings.origin = this.name;
    grunt.task.run('task1', 'task2');
});

但对我来说,这看起来很奇怪,我建议在任务目标之间划分逻辑。

感谢您的回复,不幸的是,这不起作用。您好,我已经根据您的要求更新了解决方案,它对我有效。您我的朋友是一个绝对的天才。非常有效如果您不想运行“myCustomTask”,为什么要将其保留在列表中?因为如果我有一个目标
中间人
,它会调用
myCustomTask
和一系列其他指令
middleman
及其所有指令都由
quick
build
dist
调用
myCustomTask
相当重,对于
quick
来说并不理想,所以我希望它只被这个目标忽略。如果你从
quick
列表中删除
myCustomTask
,它仍然会被
中间人调用,但不会被
quick
调用,这似乎是你想要的。那为什么不呢?