2014-11-21 62 views
3

我的目标是将最新的git commit添加到我的index.html文件中。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

回答

5

当然,您可以将回调方法添加到您的哈希任务,以便您可以将结果保存到变量中,以用于您的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')); 
}); 
+0

太好了,谢谢。在结束标签后面添加HTML注释是否有任何问题?我知道旧版IE不喜欢,但我不知道它有什么问题。 – mcranston18 2014-11-24 02:04:30

+0

哦,如果它是*评论*我认为它应该可以。 :-)然后,在关闭正文标签之后,评论应该也很好。 – Ben 2014-11-24 09:02:54

相关问题