Gulp - 从另一个任务中获取返回值

3

我的目标是将最新的git提交附加到我的index.html文件中。

以下任务成功返回最新的git哈希(使用gulp-git):

var git = require('gulp-git');
gulp.task('hash', function() {
   git.revParse({args:'--short HEAD'}, function (err, hash) {
     return hash;
   });
});

以下是构建我的HTML的任务:
var inject = require('inject-string');
gulp.task('html', function () {
  return gulp.src('app/index.html')
    .pipe(inject.append('append git hash here!'))
    .pipe(gulp.dest('dist'))
});

这成功地将一个字符串附加到index.html中,但我如何将hash任务的返回值注入到html中?

1个回答

6
当然,您可以为哈希任务添加回调方法,以便将结果保存到变量中,以在html任务中使用。 html任务也应该将哈希任务作为依赖项,以便哈希永远不会未定义。此外,您应该使用类似gulp-cheerio的东西将哈希注入输出中,以便您不会将哈希附加在结束html标记之外。
var gulp = require('gulp'),
    git  = require('gulp-git'),
    cheerio = require('gulp-cheerio');

var gitHash;

gulp.task('hash', function(cb) {
  return git.revParse({args:'--short HEAD'}, function(err, hash) {
     gitHash = hash;
     cb();
   });
});

gulp.task('html', ['hash'], function() {
  return gulp.src('app/index.html')
    .pipe(cheerio(function($) {
        $('body').append('<p>' + gitHash + '</p>');
    }))
    .pipe(gulp.dest('dist'));
});

太好了,谢谢。在 </html> 结束标签之后添加 HTML 注释有什么问题吗?我知道旧版本的 IE 不喜欢它,但我不知道还有其他什么问题。 - mcranston18
哦,如果这是一个注释,我认为应该没问题。 :-) 另一方面,在结束主体标记后紧接着一个注释也应该没问题。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接