2015-10-05 60 views
4

一些一饮而尽任务假设我有这在我的gulpfile:如何运行基于条件

gulp.task('foo', ...); 

gulp.task('bar', function() { 
    if (something) { 
    // how do I run task 'foo' here? 
    } 
}); 
+0

[gulp-if](https://github.com/robrich/gulp-if)怎么样? –

+0

@AnilNatha我想这会工作,但为什么这是必要的?为什么我不能只使用普通的'if',然后使用一些代码来运行其他任务? –

+0

我认为开发人员决定避免使用if语句编写大量任务。吞咽管道是一种干净优雅的解决方案。 如果任务大不相同,将它们分成两个独立的任务。 如果存在细微的差异(例如添加源图或不缩小),gulp-if是一个很好的解决方案,因为整个任务仍然执行相同的工作(缩小代码) –

回答

1

你可以做“酒吧”的“富”的依赖,并把条件“富”里面:

gulp.task('foo', function(){ 
    if(something){...} 
}, 'bar'); 

gulp.task('bar', function(){}); 

这种方式栏将始终运行在foo之前,并且foo可以选择是否需要运行自己的逻辑。

+1

没有真正回答我的问题 –

1

咕嘟咕嘟V3

使用过时但still workinggulp.run

gulp.task('foo', ...)  

gulp.task('bar', function() { 
    if (something) { 
    gulp.run('foo') 
    } 
}) 

另外,使用使用任何插件消耗任务名作为参数,如run-sequence例如(你可能会需要反正运行任务按照严格的顺序进行)。我打电话给我的任务,有条件这样(咕嘟咕嘟V3):

gulp.task('bar', (callback) => { 
    if (something) { 
    runSequence('foo', callback) 
    } else { 
    runSequence('foo', 'anotherTask', callback) 
    } 
}) 

咕嘟咕嘟V4

gulpfile,就是gulpfile.babel.jsfor now,将设置咕嘟咕嘟任务导出功能,这样你就直接打电话给他们:

export function foo() { 
    ... 
} 

export function bar() { 
    if (something) { 
    foo() 
    } 
}