Skip to content

Commit

Permalink
Dynamically generate build version and embed in application
Browse files Browse the repository at this point in the history
  • Loading branch information
andredumas committed Jun 26, 2014
1 parent 1d2c3ee commit bb65921
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
17 changes: 13 additions & 4 deletions Gruntfile.js
Expand Up @@ -16,11 +16,20 @@ module.exports = function(grunt) {
build: ['build']
},

filegen: {
version: {
options: {
content: "'use strict';module.exports='<%= pkg.version %>';"
},
dest: 'build/version.js'
}
},

browserify: {
dev: {
options: {
// Thanks https://github.com/amitayd/grunt-browserify-jasmine-node-example/blob/2488181e29b09226f2a87202a851f996820eafb6/Gruntfile.js#L51
require: grunt.file.expand({filter: 'isFile'}, './src/**/*.js'),
require: grunt.file.expand({filter: 'isFile'}, './src/**/*.js', './<%= filegen.version.dest %>'),
bundleOptions: {
debug: true
}
Expand Down Expand Up @@ -76,15 +85,15 @@ module.exports = function(grunt) {
jshintrc: ".jshintrc"
},
dev: {
src: ['src/**/*.js', 'lib/**/*.js', 'Gruntfile.js', 'test/**/*.js']
src: ['src/**/*.js', 'lib/**/*.js', 'Gruntfile.js', 'test/**/*.js', '<%= filegen.version.dest %>']
}
},

jscs: {
options: {
config: '.jscs.json'
},
dev: ['src/**/*.js', 'Gruntfile.js', 'test/**/*.js']
dev: ['src/**/*.js', 'Gruntfile.js', 'test/**/*.js', '<%= filegen.version.dest %>']
},

watch: {
Expand Down Expand Up @@ -141,7 +150,7 @@ module.exports = function(grunt) {
grunt.loadTasks('lib/grunt');

grunt.registerTask('lint', ['jshint', 'jscs']);
grunt.registerTask('dev', ['lint', 'browserify:dev', 'browserify:test', 'jasmine:test']);
grunt.registerTask('dev', ['filegen:version', 'lint', 'browserify:dev', 'browserify:test', 'jasmine:test']);
grunt.registerTask('dist', ['browserify:dist', 'usebanner', 'jasmine:dist']);
grunt.registerTask('minify', ['uglify', 'jasmine:minify']);
grunt.registerTask('serve', ['connect', 'watch']);
Expand Down
13 changes: 13 additions & 0 deletions lib/grunt/filegen.js
@@ -0,0 +1,13 @@
module.exports = function(grunt) {
'use strict';

// Thanks AngularJS https://github.com/angular/angular.js/blob/v1.2.16/lib/grunt/plugins.js#L66
grunt.registerMultiTask('filegen', 'Create a file with contents', function() {
var content = this.options().content;

this.files.forEach(function(file) {
grunt.log.ok('File: ' + file.dest);
grunt.file.write(file.dest, content);
});
});
};
2 changes: 1 addition & 1 deletion src/techan.js
Expand Up @@ -2,7 +2,7 @@

module.exports = (function(d3) {
return {
version: '0.1.0', // TODO Dynamically populate/tokenize
version: require('../build/version'),
accessor: require('./accessor')(),
analysis: require('./analysis')(d3),
indicator: require('./indicator')(),
Expand Down

0 comments on commit bb65921

Please sign in to comment.