我正在尝试通过bower安装软件包,一旦安装完成,我希望将文件从dist文件夹移动到其父文件夹,然后删除dist文件夹。但不知何故,它无法正常工作。
filter
这是我到现在所写的。 在凉亭之后,剩下的两个任务都没有运行。但如果我单独运行它们,它们的工作完全正常。
我无法弄清楚这里出了什么问题。任何帮助将不胜感激。
答案 0 :(得分:1)
问题是您返回事件流的数组。查看您的delete-dist-folder
任务。您return tasks
和tasks
是通过调用数组上的.map
创建的。所以tasks
是一个数组(事件流)。
Gulp不知道如何处理数组并假设您的任务是同步的。将任务标记为异步只有3种方法:1)返回偶数流; Gulp将等待流程结束,2)返回一个承诺; Gulp将等待承诺被解决或拒绝,或者3)声明您的任务回调以获取您在任务完成时将调用的单个参数; Gulp将等待回调被调用。事件流数组与这些选项中的任何一个都不对应。
Gulp wiki suggest using merge-stream
从任务中返回多个流。根据{{1}}的代码判断,并假设您将merge-stream
导入为merge-stream
,您可以执行merge
。
侧节点:在return merge.apply(undefined, tasks)
任务中,您忘记返回值。
答案 1 :(得分:-1)
我在嵌套任务时有一个类似的问题(在另一个任务中需要一个任务)。因此,为了解决这个问题并按顺序运行任务,我使用了run-sequence
。
您似乎已安装run-sequence
。以这种方式使用它:
runSequence = require('run-sequence');
gulp.task('default', function(callback) {
runSequence('clean', 'bower', 'moveFiles', 'delete-dist-folder',
callback);
});
希望这可能会对你有所帮助。您可以参考this获取任何帮助。
这是一个临时解决方案,直到gulp 4.0
,其中包括并行或顺序配置任务的选项。