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

时间:2015-12-17 12:54:21

标签: 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');
    }
});

我希望myCustomTask忽略grunt quick 将其从quick任务中删除。

grunt.registerTask('quick', [
    'task1',
    'task2',
    'myCustomTask'
]);

我希望this.nameArgs === 'quick'在任务以grunt quick的形式运行时会触发,但会跳过该任务并到达else块。换句话说,只有在我们使用this.nameArgs === 'myCustomTask'

时才会满足第一个条件

我如何定位任何一项任务,目前正在调用我们的自定义任务,以便我可以告诉它忽略它?

1 个答案:

答案 0 :(得分:2)

您是否尝试过Dynamic alias tasks

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

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');
});

但就我而言,它看起来很奇怪,我建议在任务目标之间分配逻辑。