diff --git a/Gruntfile.js b/Gruntfile.js
index d38af4e..c19c932 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,484 +1,126 @@
-/**
- * Gruntfile
- *
- * If you created your Sails app with `sails new foo --linker`,
- * the following files will be automatically injected (in order)
- * into the EJS and HTML files in your `views` and `assets` folders.
- *
- * At the top part of this file, you'll find a few of the most commonly
- * configured options, but Sails' integration with Grunt is also fully
- * customizable. If you'd like to work with your assets differently
- * you can change this file to do anything you like!
- *
- * More information on using Grunt to work with static assets:
- * http://gruntjs.com/configuring-tasks
- */
+module.exports = function(grunt) {
+ // load config functio
+ function loadConfig(path) {
+ var glob = require('glob');
+ var object = {};
+ var key;
-module.exports = function (grunt) {
+ glob.sync('*', {
+ cwd: path
+ }).forEach(function(option) {
+ key = option.replace(/.js$/, '');
+ object[key] = require(path + option)(config);
+ });
-
-
- /**
- * CSS files to inject in order
- * (uses Grunt-style wildcard/glob/splat expressions)
- *
- * By default, Sails also supports LESS in development and production.
- * To use SASS/SCSS, Stylus, etc., edit the `sails-linker:devStyles` task
- * below for more options. For this to work, you may need to install new
- * dependencies, e.g. `npm install grunt-contrib-sass`
- */
-
- var cssFilesToInject = [
- 'linker/**/*.css'
- ];
-
-
- /**
- * Javascript files to inject in order
- * (uses Grunt-style wildcard/glob/splat expressions)
- *
- * To use client-side CoffeeScript, TypeScript, etc., edit the
- * `sails-linker:devJs` task below for more options.
- */
-
- var jsFilesToInject = [
-
- // Below, as a demonstration, you'll see the built-in dependencies
- // linked in the proper order order
-
- // Bring in the socket.io client
- 'linker/js/socket.io.js',
-
- // then beef it up with some convenience logic for talking to Sails.js
- 'linker/js/sails.io.js',
-
- // A simpler boilerplate library for getting you up and running w/ an
- // automatic listener for incoming messages from Socket.io.
- 'linker/js/app.js',
-
- // *-> put other dependencies here <-*
-
- // All of the rest of your app scripts imported here
- 'linker/**/*.js'
- ];
-
-
- /**
- * Client-side HTML templates are injected using the sources below
- * The ordering of these templates shouldn't matter.
- * (uses Grunt-style wildcard/glob/splat expressions)
- *
- * By default, Sails uses JST templates and precompiles them into
- * functions for you. If you want to use jade, handlebars, dust, etc.,
- * edit the relevant sections below.
- */
-
- var templateFilesToInject = [
- 'linker/**/*.html'
- ];
-
-
-
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- //
- // DANGER:
- //
- // With great power comes great responsibility.
- //
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
-
- // Modify css file injection paths to use
- cssFilesToInject = cssFilesToInject.map(function (path) {
- return '.tmp/public/' + path;
- });
-
- // Modify js file injection paths to use
- jsFilesToInject = jsFilesToInject.map(function (path) {
- return '.tmp/public/' + path;
- });
-
-
- templateFilesToInject = templateFilesToInject.map(function (path) {
- return 'assets/' + path;
- });
-
-
- // Get path to core grunt dependencies from Sails
- var depsPath = grunt.option('gdsrc') || 'node_modules/sails/node_modules';
- grunt.loadTasks(depsPath + '/grunt-contrib-clean/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-copy/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-concat/tasks');
- grunt.loadTasks(depsPath + '/grunt-sails-linker/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-jst/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-watch/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-uglify/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-cssmin/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-less/tasks');
- grunt.loadTasks(depsPath + '/grunt-contrib-coffee/tasks');
-
- // Project configuration.
- grunt.initConfig({
- pkg: grunt.file.readJSON('package.json'),
-
- copy: {
- dev: {
- files: [
- {
- expand: true,
- cwd: './assets',
- src: ['**/*.!(coffee)'],
- dest: '.tmp/public'
- }
- ]
- },
- build: {
- files: [
- {
- expand: true,
- cwd: '.tmp/public',
- src: ['**/*'],
- dest: 'www'
- }
- ]
- }
- },
-
- clean: {
- dev: ['.tmp/public/**'],
- build: ['www']
- },
-
- jst: {
- dev: {
-
- // To use other sorts of templates, specify the regexp below:
- // options: {
- // templateSettings: {
- // interpolate: /\{\{(.+?)\}\}/g
- // }
- // },
-
- files: {
- '.tmp/public/jst.js': templateFilesToInject
- }
- }
- },
-
- less: {
- dev: {
- files: [
- {
- expand: true,
- cwd: 'assets/styles/',
- src: ['*.less'],
- dest: '.tmp/public/styles/',
- ext: '.css'
- }, {
- expand: true,
- cwd: 'assets/linker/styles/',
- src: ['*.less'],
- dest: '.tmp/public/linker/styles/',
- ext: '.css'
- }
- ]
- }
- },
-
- coffee: {
- dev: {
- options:{
- bare:true
- },
- files: [
- {
- expand: true,
- cwd: 'assets/js/',
- src: ['**/*.coffee'],
- dest: '.tmp/public/js/',
- ext: '.js'
- }, {
- expand: true,
- cwd: 'assets/linker/js/',
- src: ['**/*.coffee'],
- dest: '.tmp/public/linker/js/',
- ext: '.js'
- }
- ]
- }
- },
-
- concat: {
- js: {
- src: jsFilesToInject,
- dest: '.tmp/public/concat/production.js'
- },
- css: {
- src: cssFilesToInject,
- dest: '.tmp/public/concat/production.css'
- }
- },
-
- uglify: {
- dist: {
- src: ['.tmp/public/concat/production.js'],
- dest: '.tmp/public/min/production.js'
- }
- },
-
- cssmin: {
- dist: {
- src: ['.tmp/public/concat/production.css'],
- dest: '.tmp/public/min/production.css'
- }
- },
-
- 'sails-linker': {
-
- devJs: {
- options: {
- startTag: '',
- endTag: '',
- fileTmpl: '',
- appRoot: '.tmp/public'
- },
- files: {
- '.tmp/public/**/*.html': jsFilesToInject,
- 'views/**/*.html': jsFilesToInject,
- 'views/**/*.ejs': jsFilesToInject
- }
- },
-
- prodJs: {
- options: {
- startTag: '',
- endTag: '',
- fileTmpl: '',
- appRoot: '.tmp/public'
- },
- files: {
- '.tmp/public/**/*.html': ['.tmp/public/min/production.js'],
- 'views/**/*.html': ['.tmp/public/min/production.js'],
- 'views/**/*.ejs': ['.tmp/public/min/production.js']
- }
- },
-
- devStyles: {
- options: {
- startTag: '',
- endTag: '',
- fileTmpl: '',
- appRoot: '.tmp/public'
- },
-
- // cssFilesToInject defined up top
- files: {
- '.tmp/public/**/*.html': cssFilesToInject,
- 'views/**/*.html': cssFilesToInject,
- 'views/**/*.ejs': cssFilesToInject
- }
- },
-
- prodStyles: {
- options: {
- startTag: '',
- endTag: '',
- fileTmpl: '',
- appRoot: '.tmp/public'
- },
- files: {
- '.tmp/public/index.html': ['.tmp/public/min/production.css'],
- 'views/**/*.html': ['.tmp/public/min/production.css'],
- 'views/**/*.ejs': ['.tmp/public/min/production.css']
- }
- },
-
- // Bring in JST template object
- devTpl: {
- options: {
- startTag: '',
- endTag: '',
- fileTmpl: '',
- appRoot: '.tmp/public'
- },
- files: {
- '.tmp/public/index.html': ['.tmp/public/jst.js'],
- 'views/**/*.html': ['.tmp/public/jst.js'],
- 'views/**/*.ejs': ['.tmp/public/jst.js']
- }
- },
-
-
- /*******************************************
- * Jade linkers (TODO: clean this up)
- *******************************************/
-
- devJsJADE: {
- options: {
- startTag: '// SCRIPTS',
- endTag: '// SCRIPTS END',
- fileTmpl: 'script(type="text/javascript", src="%s")',
- appRoot: '.tmp/public'
- },
- files: {
- 'views/**/*.jade': jsFilesToInject
- }
- },
-
- prodJsJADE: {
- options: {
- startTag: '// SCRIPTS',
- endTag: '// SCRIPTS END',
- fileTmpl: 'script(type="text/javascript", src="%s")',
- appRoot: '.tmp/public'
- },
- files: {
- 'views/**/*.jade': ['.tmp/public/min/production.js']
- }
- },
-
- devStylesJADE: {
- options: {
- startTag: '// STYLES',
- endTag: '// STYLES END',
- fileTmpl: 'link(rel="stylesheet", href="%s")',
- appRoot: '.tmp/public'
- },
- files: {
- 'views/**/*.jade': cssFilesToInject
- }
- },
-
- prodStylesJADE: {
- options: {
- startTag: '// STYLES',
- endTag: '// STYLES END',
- fileTmpl: 'link(rel="stylesheet", href="%s")',
- appRoot: '.tmp/public'
- },
- files: {
- 'views/**/*.jade': ['.tmp/public/min/production.css']
- }
- },
-
- // Bring in JST template object
- devTplJADE: {
- options: {
- startTag: '// TEMPLATES',
- endTag: '// TEMPLATES END',
- fileTmpl: 'script(type="text/javascript", src="%s")',
- appRoot: '.tmp/public'
- },
- files: {
- 'views/**/*.jade': ['.tmp/public/jst.js']
- }
- }
- /************************************
- * Jade linker end
- ************************************/
- },
-
- watch: {
- api: {
-
- // API files to watch:
- files: ['api/**/*']
- },
- assets: {
-
- // Assets to watch:
- files: ['assets/**/*'],
-
- // When assets are changed:
- tasks: ['compileAssets', 'linkAssets']
- }
+ return object;
}
- });
- // When Sails is lifted:
- grunt.registerTask('default', [
- 'compileAssets',
- 'linkAssets',
- 'watch'
- ]);
+ require('load-grunt-tasks')(grunt);
+ grunt.loadTasks('tasks');
- grunt.registerTask('compileAssets', [
- 'clean:dev',
- 'jst:dev',
- 'less:dev',
- 'copy:dev',
- 'coffee:dev'
- ]);
+ // Project configuration.
+ var config = {
+ pkg: grunt.file.readJSON('package.json'),
+ env: process.env,
+ cssFilesToInject: [
+ 'linker/**/*.css'
+ ].map(function(path) {
+ return '.tmp/public/' + path;
+ }),
+ jsFilesToInject: [
+ 'linker/js/vendor/socket.io.js',
+ 'linker/js/vendor/sails.io.js',
+ 'linker/js/vendor/jquery-2.1.0.js',
+ 'linker/js/vendor/underscore.js',
+ 'linker/js/vender/json2.js',
+ 'linker/js/vendor/backbone.js',
+ 'linker/js/vendor/bootstrap.js',
+ 'linker/js/app.js',
+ 'linker/js/models/*.js',
+ 'linker/js/collections/*.js',
+ 'linker/js/views/*.js',
+ 'linker/**/*.js'
+ ].map(function(path) {
+ return '.tmp/public/' + path;
+ }),
+ templateFilesToInject: [
+ 'linker/**/*.html'
+ ].map(function(path) {
+ return 'assets/' + path;
+ })
+ };
- grunt.registerTask('linkAssets', [
+ grunt.util._.extend(config, loadConfig('./tasks/options/'));
+ grunt.initConfig(config);
- // Update link/script/template references in `assets` index.html
- 'sails-linker:devJs',
- 'sails-linker:devStyles',
- 'sails-linker:devTpl',
- 'sails-linker:devJsJADE',
- 'sails-linker:devStylesJADE',
- 'sails-linker:devTplJADE'
- ]);
+ // task aliases
+ // When Sails is lifted:
+ grunt.registerTask('default', [
+ 'compileAssets',
+ 'linkAssets',
+ 'watch'
+ ]);
- // Build the assets into a web accessible folder.
- // (handy for phone gap apps, chrome extensions, etc.)
- grunt.registerTask('build', [
- 'compileAssets',
- 'linkAssets',
- 'clean:build',
- 'copy:build'
- ]);
+ grunt.registerTask('compileAssets', [
+ 'clean:dev',
+ 'jst:dev',
+ 'jade:templates',
+ 'less:dev',
+ 'copy:dev',
+ 'coffee:dev'
+ ]);
- // When sails is lifted in production
- grunt.registerTask('prod', [
- 'clean:dev',
- 'jst:dev',
- 'less:dev',
- 'copy:dev',
- 'coffee:dev',
- 'concat',
- 'uglify',
- 'cssmin',
- 'sails-linker:prodJs',
- 'sails-linker:prodStyles',
- 'sails-linker:devTpl',
- 'sails-linker:prodJsJADE',
- 'sails-linker:prodStylesJADE',
- 'sails-linker:devTplJADE'
- ]);
+ grunt.registerTask('linkAssets', [
+ // Update link/script/template references in `assets` index.html
+ 'sails-linker:devJs',
+ 'sails-linker:devStyles',
+ 'sails-linker:devTpl',
+ 'sails-linker:devJsJADE',
+ 'sails-linker:devStylesJADE',
+ 'sails-linker:devTplJADE'
+ ]);
- // When API files are changed:
- // grunt.event.on('watch', function(action, filepath) {
- // grunt.log.writeln(filepath + ' has ' + action);
+ // Build the assets into a web accessible folder.
+ // (handy for phone gap apps, chrome extensions, etc.)
+ grunt.registerTask('build', [
+ 'compileAssets',
+ 'linkAssets',
+ 'clean:build',
+ 'copy:build'
+ ]);
- // // Send a request to a development-only endpoint on the server
- // // which will reuptake the file that was changed.
- // var baseurl = grunt.option('baseurl');
- // var gruntSignalRoute = grunt.option('signalpath');
- // var url = baseurl + gruntSignalRoute + '?action=' + action + '&filepath=' + filepath;
+ // When sails is lifted in production
+ grunt.registerTask('prod', [
+ 'clean:dev',
+ 'jst:dev',
+ 'less:dev',
+ 'copy:dev',
+ 'coffee:dev',
+ 'concat',
+ 'uglify',
+ 'cssmin',
+ 'sails-linker:prodJs',
+ 'sails-linker:prodStyles',
+ 'sails-linker:devTpl',
+ 'sails-linker:prodJsJADE',
+ 'sails-linker:prodStylesJADE',
+ 'sails-linker:devTplJADE'
+ ]);
- // require('http').get(url)
- // .on('error', function(e) {
- // console.error(filepath + ' has ' + action + ', but could not signal the Sails.js server: ' + e.message);
- // });
- // });
+ // When API files are changed:
+ // grunt.event.on('watch', function(action, filepath) {
+ // grunt.log.writeln(filepath + ' has ' + action);
+
+ // // Send a request to a development-only endpoint on the server
+ // // which will reuptake the file that was changed.
+ // var baseurl = grunt.option('baseurl');
+ // var gruntSignalRoute = grunt.option('signalpath');
+ // var url = baseurl + gruntSignalRoute + '?action=' + action + '&filepath=' + filepath;
+
+ // require('http').get(url)
+ // .on('error', function(e) {
+ // console.error(filepath + ' has ' + action + ', but could not signal the Sails.js server: ' + e.message);
+ // });
+ // });
};
diff --git a/tasks/load-asv.js b/tasks/load-asv.js
new file mode 100644
index 0000000..920f853
--- /dev/null
+++ b/tasks/load-asv.js
@@ -0,0 +1,44 @@
+module.exports = function(grunt) {
+ grunt.registerTask('load-asv', "Loads the ASV verses", function() {
+ var done = this.async();
+ var path = '../dbs/t_asv.json';
+ var json = grunt.file.readJSON(path).resultset.row;
+ var MongoClient = require('mongodb').MongoClient;
+
+ MongoClient.connect('mongodb://localhost/BibleDev', function(err, db) {
+ if(err) throw err;
+
+ var versesColl = db.collection('verse');
+ grunt.log.writeln('Got collection: ' + versesColl);
+ grunt.log.writeln('Going to process ' + json.length + ' verses.');
+
+ for(var i = 0; i < json.length; i++) {
+ var verse = {};
+ for(var k = 0; k < json[i].field.length; k++) {
+ var value = json[i].field[k]['_'];
+ var key = json[i].field[k]['$']['name'];
+
+ if(key == 'c') key = 'chapter';
+ else if (key == 'v') key = 'verse';
+ else if (key == 'b') key = 'book';
+ else if (key == 't') key = 'text';
+ else if (key == 'id') key = 'reference';
+
+ verse[key] = value;
+ verse['number'] = i;
+ }
+
+ versesColl.insert(verse, function(err, results) {
+ if(err) throw err;
+ });
+ }
+
+ versesColl.count(function(err, count) {
+ if(err) throw err;
+ grunt.log.writeln('Wrote ' + count + ' verse(s).');
+
+ done();
+ });
+ });
+ });
+};
diff --git a/tasks/options/clean.js b/tasks/options/clean.js
new file mode 100644
index 0000000..7719deb
--- /dev/null
+++ b/tasks/options/clean.js
@@ -0,0 +1,7 @@
+// clean
+module.exports = function(config) {
+ return {
+ dev: ['.tmp/public/**'],
+ build: ['www']
+ };
+};
diff --git a/tasks/options/coffee.js b/tasks/options/coffee.js
new file mode 100644
index 0000000..0cf7819
--- /dev/null
+++ b/tasks/options/coffee.js
@@ -0,0 +1,23 @@
+// coffee
+module.exports = function(config) {
+ return {
+ dev: {
+ options: {
+ bare: true
+ },
+ files: [{
+ expand: true,
+ cwd: 'assets/js/',
+ src: ['**/*.coffee'],
+ dest: '.tmp/public/js/',
+ ext: '.js'
+ }, {
+ expand: true,
+ cwd: 'assets/linker/js/',
+ src: ['**/*.coffee'],
+ dest: '.tmp/public/linker/js/',
+ ext: '.js'
+ }]
+ }
+ };
+};
diff --git a/tasks/options/concat.js b/tasks/options/concat.js
new file mode 100644
index 0000000..a4ce8b7
--- /dev/null
+++ b/tasks/options/concat.js
@@ -0,0 +1,13 @@
+// concat
+module.exports = function(config) {
+ return {
+ js: {
+ src: config.jsFilesToInject,
+ dest: '.tmp/public/concat/production.js'
+ },
+ css: {
+ src: config.cssFilesToInject,
+ dest: '.tmp/public/concat/production.css'
+ }
+ };
+};
diff --git a/tasks/options/copy.js b/tasks/options/copy.js
new file mode 100644
index 0000000..4219ec7
--- /dev/null
+++ b/tasks/options/copy.js
@@ -0,0 +1,21 @@
+// copy
+module.exports = function(config) {
+ return {
+ dev: {
+ files: [{
+ expand: true,
+ cwd: './assets',
+ src: ['**/*.!(coffee|jade)'],
+ dest: '.tmp/public'
+ }]
+ },
+ build: {
+ files: [{
+ expand: true,
+ cwd: '.tmp/public',
+ src: ['**/*'],
+ dest: 'www'
+ }]
+ }
+ };
+};
diff --git a/tasks/options/cssmin.js b/tasks/options/cssmin.js
new file mode 100644
index 0000000..ad63f4c
--- /dev/null
+++ b/tasks/options/cssmin.js
@@ -0,0 +1,9 @@
+// cssmin
+module.exports = function(config) {
+ return {
+ dist: {
+ src: ['.tmp/public/concat/production.css'],
+ dest: '.tmp/public/min/production.css'
+ }
+ };
+};
diff --git a/tasks/options/jade.js b/tasks/options/jade.js
new file mode 100644
index 0000000..5316942
--- /dev/null
+++ b/tasks/options/jade.js
@@ -0,0 +1,14 @@
+// jade
+module.exports = function(config) {
+ return {
+ templates: {
+ files: [{
+ expand: true,
+ cwd: './assets/linker/templates/',
+ src: ['*.jade'],
+ dest: './assets/linker/templates/',
+ ext: '.html'
+ }]
+ }
+ };
+};
diff --git a/tasks/options/jst.js b/tasks/options/jst.js
new file mode 100644
index 0000000..424df34
--- /dev/null
+++ b/tasks/options/jst.js
@@ -0,0 +1,17 @@
+// jst
+module.exports = function(config) {
+ return {
+ dev: {
+ options: {
+ namespace: 'App.Templates',
+ templateSettings: {
+ interpolate: /\{\{(.+?)\}\}/g
+ }
+ },
+
+ files: {
+ '.tmp/public/templates.js': config.templateFilesToInject
+ }
+ }
+ };
+};
diff --git a/tasks/options/less.js b/tasks/options/less.js
new file mode 100644
index 0000000..c72e5be
--- /dev/null
+++ b/tasks/options/less.js
@@ -0,0 +1,20 @@
+// less
+module.exports = function(config) {
+ return {
+ dev: {
+ files: [{
+ expand: true,
+ cwd: 'assets/styles/',
+ src: ['*.less'],
+ dest: '.tmp/public/styles/',
+ ext: '.css'
+ }, {
+ expand: true,
+ cwd: 'assets/linker/styles/',
+ src: ['*.less'],
+ dest: '.tmp/public/linker/styles/',
+ ext: '.css'
+ }]
+ }
+ };
+};
diff --git a/tasks/options/sails-linker.js b/tasks/options/sails-linker.js
new file mode 100644
index 0000000..2df1bce
--- /dev/null
+++ b/tasks/options/sails-linker.js
@@ -0,0 +1,141 @@
+// sails-linker
+module.exports = function(config) { return {
+ devJs: {
+ options: {
+ startTag: '',
+ endTag: '',
+ fileTmpl: '',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ '.tmp/public/**/*.html': config.jsFilesToInject,
+ 'views/**/*.html': config.jsFilesToInject,
+ 'views/**/*.ejs': config.jsFilesToInject
+ }
+ },
+
+ prodJs: {
+ options: {
+ startTag: '',
+ endTag: '',
+ fileTmpl: '',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ '.tmp/public/**/*.html': ['.tmp/public/min/production.js'],
+ 'views/**/*.html': ['.tmp/public/min/production.js'],
+ 'views/**/*.ejs': ['.tmp/public/min/production.js']
+ }
+ },
+
+ devStyles: {
+ options: {
+ startTag: '',
+ endTag: '',
+ fileTmpl: '',
+ appRoot: '.tmp/public'
+ },
+
+ // config.cssFilesToInject defined up top
+ files: {
+ '.tmp/public/**/*.html': config.cssFilesToInject,
+ 'views/**/*.html': config.cssFilesToInject,
+ 'views/**/*.ejs': config.cssFilesToInject
+ }
+ },
+
+ prodStyles: {
+ options: {
+ startTag: '',
+ endTag: '',
+ fileTmpl: '',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ '.tmp/public/index.html': ['.tmp/public/min/production.css'],
+ 'views/**/*.html': ['.tmp/public/min/production.css'],
+ 'views/**/*.ejs': ['.tmp/public/min/production.css']
+ }
+ },
+
+ // Bring in JST template object
+ devTpl: {
+ options: {
+ startTag: '',
+ endTag: '',
+ fileTmpl: '',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ '.tmp/public/index.html': ['.tmp/public/templates.js'],
+ 'views/**/*.html': ['.tmp/public/templates.js'],
+ 'views/**/*.ejs': ['.tmp/public/templates.js']
+ }
+ },
+
+
+ /*******************************************
+ * Jade linkers (TODO: clean this up)
+ *******************************************/
+
+ devJsJADE: {
+ options: {
+ startTag: '// SCRIPTS',
+ endTag: '// SCRIPTS END',
+ fileTmpl: 'script(type="text/javascript", src="%s")',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ 'views/**/*.jade': config.jsFilesToInject
+ }
+ },
+
+ prodJsJADE: {
+ options: {
+ startTag: '// SCRIPTS',
+ endTag: '// SCRIPTS END',
+ fileTmpl: 'script(type="text/javascript", src="%s")',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ 'views/**/*.jade': ['.tmp/public/min/production.js']
+ }
+ },
+
+ devStylesJADE: {
+ options: {
+ startTag: '// STYLES',
+ endTag: '// STYLES END',
+ fileTmpl: 'link(rel="stylesheet", href="%s")',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ 'views/**/*.jade': config.cssFilesToInject
+ }
+ },
+
+ prodStylesJADE: {
+ options: {
+ startTag: '// STYLES',
+ endTag: '// STYLES END',
+ fileTmpl: 'link(rel="stylesheet", href="%s")',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ 'views/**/*.jade': ['.tmp/public/min/production.css']
+ }
+ },
+
+ // Bring in JST template object
+ devTplJADE: {
+ options: {
+ startTag: '// TEMPLATES',
+ endTag: '// TEMPLATES END',
+ fileTmpl: 'script(type="text/javascript", src="%s")',
+ appRoot: '.tmp/public'
+ },
+ files: {
+ 'views/**/*.jade': ['.tmp/public/templates.js']
+ }
+ }
+};};
diff --git a/tasks/options/uglify.js b/tasks/options/uglify.js
new file mode 100644
index 0000000..7f8e61d
--- /dev/null
+++ b/tasks/options/uglify.js
@@ -0,0 +1,9 @@
+// uglify
+module.exports = function(config) {
+ return {
+ dist: {
+ src: ['.tmp/public/concat/production.js'],
+ dest: '.tmp/public/min/production.js'
+ }
+ };
+};
diff --git a/tasks/options/watch.js b/tasks/options/watch.js
new file mode 100644
index 0000000..f336315
--- /dev/null
+++ b/tasks/options/watch.js
@@ -0,0 +1,17 @@
+// watch
+module.exports = function(config) {
+ return {
+ api: {
+ // API files to watch:
+ files: ['api/**/*']
+ },
+ assets: {
+
+ // Assets to watch:
+ files: ['assets/**/*'],
+
+ // When assets are changed:
+ tasks: ['compileAssets', 'linkAssets']
+ }
+ };
+};