Gulp,让任务使用另一个任务输出

时间:2015-12-08 12:57:12

标签: gulp workflow html-email

我正在与Gulp建立工作流程来处理电子邮件,而且我遇到了一些麻烦。

我的gulp文件将jade文件编译成html,然后我想在此任务输出的html文件上运行另一个任务。我已将其设置如下面的代码所示。

问题在于,即使控制台说“电子邮件建设者”也是如此。任务运行,它没有做任何事情。但是,如果我运行电子邮件建设者'在' gulp build'之后单独进行。它确实做了应有的事情。

enter image description here 图像显示emailBuilder最后运行,但仍然没有做到应有的效果。

如何顺利完成这项工作?

//-----------------------------------------------------
// ### REQUIREMENTS
//-------------------
var gulp          = require('gulp'),
    jade          = require('gulp-jade'),
    sass          = require('gulp-sass'),
    del           = require('del'),
    emailBuilder  = require('gulp-email-builder'),
    runSequence   = require('gulp-run-sequence');

//-----------------------------------------------------
// ### Clean
// `gulp clean`
//-------------------
// Clean our compiled folder before we generate new content into it
gulp.task('clean', function (cb) {
    del([
        // here we use a globbing pattern to match everything inside the `compiled` folder, except our gitkeep file
        'compiled/**/*',
        ], { dot: true },
    cb);
});

//-----------------------------------------------------
// ### Compile SCSS
// `gulp compile-css`
//-------------------
gulp.task('compile-scss', function () {
  gulp.src('./src/scss/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('./compiled/css'));
});

//-----------------------------------------------------
// ### Build Jade templates
// `gulp templates`
//-------------------
gulp.task('templates', function() {
  var YOUR_LOCALS = {};

  gulp.src('./src/templates/*.jade')
    .pipe(jade({
        pretty: true,
        locals: YOUR_LOCALS
    }))
    .pipe(gulp.dest('./compiled/templates/'));
});

//-----------------------------------------------------
// ### Inline CSS, send tests
// `gulp compile-css`
//-------------------
 gulp.task('emailBuilder', function() {
    return gulp.src(['./compiled/templates/*.html'])
      .pipe(emailBuilder())
      .pipe(gulp.dest('./compiled/templates/'));
  });

//-----------------------------------------------------
// ### Build
// `gulp build` - Clean up the builds directory and do a complete build.
//-------------------
gulp.task('build', function(callback) {
  runSequence(
    'clean',
    'compile-scss',
    'templates',
    'emailBuilder',
  callback);
});

1 个答案:

答案 0 :(得分:0)

您需要在任务中添加return语句。根据{{​​3}}:

  

确保您的依赖项任务正确使用异步运行提示:接受回调或返回承诺或事件流。

如果您没有返回承诺或事件流(或使用回调),则以下任务不会知道上一个任务何时完成。

我怀疑在你的情况下emailBuilder任务运行得太快了。