在gulp.series()或gulp.parallel()中使用数组

时间:2017-01-30 17:51:35

标签: node.js gulp

我已经动态创建了gulp任务,工作正常。但是通过将数组传递给gulp.series()gulp.parallel()来执行任务并不起作用。

imho这应该根据文件工作:
https://gulp.readme.io/docs/gulpseriestasks
https://gulp.readme.io/docs/gulpparalleltasks

这是我想要做的简化版本:

var tasks = ['clean', 'build', 'images'];
gulp.task('main', gulp.series('init', tasks));

'init'执行没有问题,但似乎tasks被忽略了。

任何想法如何在gulp.series()gulp.parallel()内使用taks数组?

更新: 我正在使用gulp 4.0.0-alpha.2

最终更新:因为我刚发现问题是,我的数组已异步生成。当我尝试我的任务时,它是空的,所以我没有收到任何错误消息。我的代码工作正常。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

看起来这些方法希望将多个任务作为参数传递,因此您可以对它们调用apply并传递数组:

gulp.task('main', gulp.series.apply(gulp, ['clean', 'build', 'images']))

(免责声明:我自己没有对此进行测试)

*编辑*

好的,我知道你在做什么。您需要传递 字符串,函数或数组。你不能混合搭配。

所以你可能想做的是:

var tasks = ['clean', 'build', 'images'];
gulp.task('main', gulp.series(['init'].concat(tasks)));

或者,使用数组扩展运算符:

var tasks = ['clean', 'build', 'images'];
gulp.task('main', gulp.series(['init', ...tasks]));