等待Gulp任务完成

时间:2016-07-29 08:35:23

标签: gulp

我在gulpSequence中指定了一些Gulp任务,如下所示:

gulp.task('default', function(done){
    gulpSequence(
        'private:clean',
        'private:copy-app-package-file',
        'private:copy-app-main-file',
        'private:copy-libs',
        'private:copy-app-files',
        'private:copy-css-files',
        'private:build-html',
        'private:package-app',
        done);
});
我认为他们应该一个接一个地跑。 build-html任务需要libs,app-files和css-files,因为它们包含在一个html文件中。

但是如果我运行默认任务,build-html任务会丢失一些文件。例如,任务只能在html文件中注入10个文件,但有16个文件。

是否有另一种指定依赖任务的方法。我以为gulpSequence会处理这个问题。

2 个答案:

答案 0 :(得分:0)

您指定所有任务应按顺序运行,完全没有并行性。一旦以前的任务显示完成,新任务就会启动。

您可能在build-html任务之前的任务中遇到一些问题。他们是否正确处理完成(done()回调)?在大多数情况下,我看到触发了一些异步操作,并在异步任务完成之前调用了回调。因此,在任务真正结束之前,序列仍在继续...

答案 1 :(得分:0)

您排在正确的行,但您尝试使用的npm包已弃用。可能值得考虑签出run-sequencehttps://www.npmjs.com/package/run-sequence),等待上一个任务在开始之前完成。

所以在你的实例中,这将成为

gulp.task('default', function( cb ) { $.runSequence( 'private:clean', 'private:copy-app-package-file', 'private:copy-app-main-file', 'private:copy-libs', 'private:copy-app-files', 'private:copy-css-files', 'private:build-html', 'private:package-app', cb ) });