首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gulp run-sequence未完成任务

gulp run-sequence未完成任务
EN

Stack Overflow用户
提问于 2015-12-01 21:50:13
回答 1查看 966关注 0票数 3

我定义了下面的gulp tasks。他们应该修改静态文件并替换指向它们的链接。

代码语言:javascript
复制
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;

如果我手动运行彼此的任务,一切都很好。但是,如果我运行由run-sequence运行的所有rev任务组成的任务'rev‘,那么最后一个任务'rev:updateHTML’就没有完成。

我的控制台输出如下所示

代码语言:javascript
复制
 ~/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/$

我在我的任务中找不到任何错误,但我猜是异步运行的流出现了错误。我希望你能帮助我,指出我的错误。

EN

回答 1

Stack Overflow用户

发布于 2016-01-18 19:21:42

如果我没有完全错,gulp不会识别任务是否已经完成。因此,您可以使用done作为参数,并在管道完成时执行它。所以实际上是这样的:

代码语言:javascript
复制
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();
  });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34022079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档