gulp-run-sequence没有完成任务

我有以下的gulp任务定义。 他们应该修改静态文件并replace链接。

var config = require('./config'); var gulp = require('gulp'); var rev = require('gulp-rev'); var revNapkin = require('gulp-rev-napkin'); var revReplace = require('gulp-rev-replace'); var runSequence = require('run-sequence'); var manifest_src = gulp.src('./' + config.base.dest + '/manifest.json'); var revStatic = function() { return gulp.src([config.base.dest + '/**/*', '!' + config.base.dest + '/**/*+(css|js|json|html)']) .pipe(rev()) .pipe(gulp.dest(config.base.dest)) .pipe(revNapkin({verbose: false})) .pipe(rev.manifest(config.base.dest + '/manifest.json', {merge: true})) .pipe(gulp.dest('')); } var revUpdateRef = function() { return gulp.src(config.base.dest + '/**/**.{css,js}') .pipe(revReplace({manifest: manifest_src})) .pipe(gulp.dest(config.base.dest)); } var revCSSJS = function() { return gulp.src(config.base.dest + '/**/*.{css,js}') .pipe(rev()) .pipe(gulp.dest(config.base.dest)) .pipe(revNapkin({verbose: false})) .pipe(rev.manifest(config.base.dest + '/manifest.json', {merge: true})) .pipe(gulp.dest('')); } var revUpdateHTML = function() { return gulp.src(config.base.dest + '/**/*.html') .pipe(revReplace({manifest: manifest_src})) .pipe(gulp.dest(config.base.dest)); } var revTask = function(cb) { runSequence('rev:static', 'rev:updateRef', 'rev:cssjs', 'rev:updateHTML', cb) } gulp.task('rev:static', revStatic); module.exports = revStatic; gulp.task('rev:updateRef', revUpdateRef); module.exports = revUpdateRef; gulp.task('rev:cssjs', revCSSJS); module.exports = revCSSJS; gulp.task('rev:updateHTML', revUpdateHTML); module.exports = revUpdateHTML; gulp.task('rev', revTask); module.exports = revTask; 

如果我用手执行任务,一切都很好。 然而,如果我运行由运行序列运行的所有rev任务组成的任务“rev”,则最后的任务“rev:updateHTML”还没有完成。

我的控制台输出看起来像这样

  ~/working/gulp-workflow/$gulp rev [14:33:41] Using gulpfile ~/working/gulp-workflow/gulpfile.js [14:33:41] Starting 'rev'... [14:33:41] Starting 'rev:static'... [14:33:41] Finished 'rev:static' after 204 ms [14:33:41] Starting 'rev:updateRef'... [14:33:41] Finished 'rev:updateRef' after 38 ms [14:33:41] Starting 'rev:cssjs'... [14:33:41] Finished 'rev:cssjs' after 26 ms [14:33:41] Starting 'rev:updateHTML'... ~/working/gulp-workflow/$ 

我不能在我的任务中发现任何错误,但是我认为stream运行asynchronous时出现错误。 我希望你能帮助我,指出我的错误。

如果我不是完全错误的话,如果任务已经完成或者没有完成,吞咽就不会承认。 因此,可以使用done作为参数并在pipe道完成时执行它。 所以实际上是这样的:

 var revUpdateHTML = function(done) { return gulp.src(config.base.dest + '/**/*.html') .pipe(revReplace({manifest: manifest_src})) .pipe(gulp.dest(config.base.dest)) .on('end', function() { done(); }); }