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

Accessing Grunt Current Task from Another Task

本文关键字:Grunt 当前任务 访问 任务 另一个      更新时间:2023-09-26

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

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

我希望grunt quick忽略myCustomTask而不将其从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');
});

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