我正在使用gulp构建我的angularjs应用程序,并希望以某种方式将最新的git commit hash注入我的角度应用程序中,以便在调试生产问题时可以使用它。
即使只是将它作为全局变量注入我的index.html模板的情况也是如此。
有人可以推荐一个好的技术和插件来实现这个目标吗?
答案 0 :(得分:7)
我最终使用git-rev-sync和gulp-replace并将{{git}}放入我的index.html源文件中。
var git = require('git-rev-sync');
return gulp.src(pathConfig.src + 'index.html')
.pipe($.replace('{{git}}', git.long()))
.pipe(gulp.dest(pathConfig.dest + 'index.html'));
答案 1 :(得分:2)
注入最新的git commit hash
以下是如何做到这一点:
git将最新的提交哈希存储在.git/refs/heads/<branch name>
中
使用以下代码阅读该文件的内容,然后将其放在任何需要的地方
# load fs for reading /writing files
fs = require("fs"),
// define your task
gulp.task('doSometing', function() {
return gulp.src(dirs.src + '/templates/*.html')
// read the SHA-1 of the latest commit
.pipe(fs.readFile("path/to/.git/refs/heads/<branch name>",
// Default encoding for fs is binary so we have to set it to UTF-8
"utf-8",
// Process the data you have read (SHA-1)
function(err, _data) {
//do something with your data
})
.pipe(gulp.dest('destination/path));
});
答案 2 :(得分:0)
对于未使用jQuery的用户,通过@ the-a-train跟踪答案。
var git = require('git-rev-sync');
var replace = require('git-replace');
return gulp.src(pathConfig.src + 'index.html')
.pipe(replace('{{git}}', git.long()))
.pipe(gulp.dest(pathConfig.dest + 'index.html'));