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

比方说,我有一个任务, 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跑,但它跳过,并达到其他块。 换句话说,第一个条件只有当我们使用this.nameArgs === 'myCustomTask'

我怎样才能瞄准任何一个任务,目前正在调用我们的自定义任务,所以我可以告诉它忽略它?

你尝试过dynamic别名任务吗?

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

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

UPDATE

如果你想排除任务执行,如果一些任务已经运行,那么你可以做到以下几点:

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

但是就我而言,这看起来很奇怪,我会build议在任务的目标之间分配逻辑。