在gulp build

时间:2016-01-07 10:47:46

标签: angularjs node.js git gulp fs

我正在使用gulp构建我的angularjs应用程序,并希望以某种方式将最新的git commit hash注入我的角度应用程序中,以便在调试生产问题时可以使用它。

即使只是将它作为全局变量注入我的index.html模板的情况也是如此。

有人可以推荐一个好的技术和插件来实现这个目标吗?

3 个答案:

答案 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'));