我用gruntjs和yeoman.io构建我的webapp.
我希望能够录制git的修改/提交/ SHA一个构建从何而来,这样我可以在部署的版本,并仔细检查它来自何处,哪些已经与新版本改变了一下.
inu*_*huk 13
也不是Grunt专家,但这里是基于git describe的解决方案,我目前用于大型AngularJS应用程序.我们将主要版本存储在项目的package.json中.除此之外,我生成一个version.json文件,其中包含每个构建的修订和日期.客户端稍后可以访问此信息,以帮助测试人员和维护人员查看他们正在使用的应用程序的版本/修订版本.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
'git-describe': {
options: {
prop: 'meta.revision'
},
me: {}
},
...
});
grunt.registerTask('tag-revision', 'Tag the current build revision', function () {
grunt.task.requires('git-describe');
grunt.file.write('public/version.json', JSON.stringify({
version: grunt.config('pkg.version'),
revision: grunt.config('meta.revision'),
date: grunt.template.today()
}));
});
grunt.registerTask('version', ['git-describe', 'tag-revision']);
Run Code Online (Sandbox Code Playgroud)
因此,通过在我们的构建任务中包含版本任务,我们可以使用version.json文件标记每个构建.
不是gruntjs专家,但也许你可以在你的构建步骤中包含对gruntjs-git-describe模块的调用,该模块将调用该任务:
module.exports = function( grunt ) {
grunt.registerTask("describe", "Describes current git commit", function (prop) {
var done = this.async();
grunt.log.write("Describe current commit: ");
grunt.util.spawn({
cmd : "git",
args : [ "describe", "--tags", "--always", "--long", "--dirty" ]
}, function (err, result) {
if (err) {
grunt.log.error(err);
return done(false);
}
grunt.config(prop || "meta.version", result);
grunt.log.writeln(result.green);
done(result);
});
});
};
Run Code Online (Sandbox Code Playgroud)
使用git-describe是用Git记录"版本号"的好方法,因为它是基于SHA1的(明确的id).
查看有关该主题的更多信息