[Build] Resolves #239 Issue #239

This commit is contained in:
Peter Cottle 2015-02-08 18:58:22 -08:00
parent 25d678ea2e
commit f66c933428
2 changed files with 33 additions and 8 deletions

View file

@ -13,6 +13,28 @@ _.templateSettings.evaluate = /\{\{-(.*?)\}\}/g;
var indexFile = fs.readFileSync('src/template.index.html').toString(); var indexFile = fs.readFileSync('src/template.index.html').toString();
var indexTemplate = _.template(indexFile); var indexTemplate = _.template(indexFile);
/**
* This is SUPER jank but I cant get the underscore templating to evaluate
* correctly with custom regexes, so I'm just going to use interpolate
* and define the strings here.
*/
var prodDependencies = [
'<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>',
'<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>',
'<script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>',
'<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>'
];
var devDependencies = [
'<script src="lib/jquery-1.8.0.min.js"></script>',
'<script src="lib/jquery-ui-1.9.0.custom.min.js"></script>',
'<script src="lib/underscore-min.js"></script>',
'<script src="lib/backbone-min.js"></script>',
'<script src="lib/backbone.localStorage-min.js"></script>',
'<script src="lib/raphael-min.js"></script>'
];
/*global module:false*/ /*global module:false*/
module.exports = function(grunt) { module.exports = function(grunt) {
// eventually have sound...? // eventually have sound...?
@ -32,7 +54,7 @@ module.exports = function(grunt) {
}); });
}); });
grunt.registerTask('buildIndex', 'stick in hashed resources', function() { var buildIndex = function(config) {
grunt.log.writeln('Building index...'); grunt.log.writeln('Building index...');
// first find the one in here that we want // first find the one in here that we want
@ -73,10 +95,16 @@ module.exports = function(grunt) {
// output these filenames to our index template // output these filenames to our index template
var outputIndex = indexTemplate({ var outputIndex = indexTemplate({
jsFile: hashedMinFile, jsFile: hashedMinFile,
styleFile: hashedStyleFile styleFile: hashedStyleFile,
jsDependencies: config.isProd ?
prodDependencies.join("\n") :
devDependencies.join("\n")
}); });
fs.writeFileSync('index.html', outputIndex); fs.writeFileSync('index.html', outputIndex);
}); };
grunt.registerTask('buildIndex', 'stick in hashed resources', buildIndex.bind(null, {isProd: true}));
grunt.registerTask('buildIndexDev', 'stick in hashed resources', buildIndex.bind(null, {isProd: false}));
grunt.initConfig({ grunt.initConfig({
pkg: grunt.file.readJSON('package.json'), pkg: grunt.file.readJSON('package.json'),
@ -197,7 +225,7 @@ module.exports = function(grunt) {
['clean', 'browserify', 'uglify', 'hash', 'buildIndex', 'shell', 'jasmine_node', 'jshint', 'lintStrings', 'compliment'] ['clean', 'browserify', 'uglify', 'hash', 'buildIndex', 'shell', 'jasmine_node', 'jshint', 'lintStrings', 'compliment']
); );
grunt.registerTask('lint', ['jshint', 'compliment']); grunt.registerTask('lint', ['jshint', 'compliment']);
grunt.registerTask('fastBuild', ['clean', 'browserify', 'hash', 'buildIndex', 'jshint']); grunt.registerTask('fastBuild', ['clean', 'browserify', 'hash', 'buildIndexDev', 'jshint']);
grunt.registerTask('watching', ['fastBuild', 'jasmine_node', 'jshint', 'lintStrings']); grunt.registerTask('watching', ['fastBuild', 'jasmine_node', 'jshint', 'lintStrings']);
grunt.registerTask('default', ['build']); grunt.registerTask('default', ['build']);

View file

@ -94,12 +94,9 @@
</a> </a>
<!-- Dependencies --> <!-- Dependencies -->
<script src="lib/jquery-1.8.0.min.js"></script>
<script src="lib/jquery-ui-1.9.0.custom.min.js"></script> <script src="lib/jquery-ui-1.9.0.custom.min.js"></script>
<script src="lib/underscore-min.js"></script>
<script src="lib/backbone-min.js"></script>
<script src="lib/backbone.localStorage-min.js"></script> <script src="lib/backbone.localStorage-min.js"></script>
<script src="lib/raphael-min.js"></script> {{jsDependencies}}
<!-- Templates from here on out. Someone seriously needs to fix template <!-- Templates from here on out. Someone seriously needs to fix template
management for node.js apps. I know there is the text plugin management for node.js apps. I know there is the text plugin