Add modified gruntfile.js and tasks
This commit is contained in:
452
Gruntfile.js
452
Gruntfile.js
@@ -1,416 +1,59 @@
|
|||||||
/**
|
|
||||||
* 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) {
|
module.exports = function(grunt) {
|
||||||
|
// load config functio
|
||||||
|
function loadConfig(path) {
|
||||||
|
var glob = require('glob');
|
||||||
|
var object = {};
|
||||||
|
var key;
|
||||||
|
|
||||||
|
glob.sync('*', {
|
||||||
|
cwd: path
|
||||||
/**
|
}).forEach(function(option) {
|
||||||
* CSS files to inject in order
|
key = option.replace(/.js$/, '');
|
||||||
* (uses Grunt-style wildcard/glob/splat expressions)
|
object[key] = require(path + option)(config);
|
||||||
*
|
|
||||||
* 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
|
return object;
|
||||||
jsFilesToInject = jsFilesToInject.map(function (path) {
|
}
|
||||||
return '.tmp/public/' + path;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
require('load-grunt-tasks')(grunt);
|
||||||
templateFilesToInject = templateFilesToInject.map(function (path) {
|
grunt.loadTasks('tasks');
|
||||||
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.
|
// Project configuration.
|
||||||
grunt.initConfig({
|
var config = {
|
||||||
pkg: grunt.file.readJSON('package.json'),
|
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;
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
copy: {
|
grunt.util._.extend(config, loadConfig('./tasks/options/'));
|
||||||
dev: {
|
grunt.initConfig(config);
|
||||||
files: [
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
cwd: './assets',
|
|
||||||
src: ['**/*.!(coffee)'],
|
|
||||||
dest: '.tmp/public'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
files: [
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
cwd: '.tmp/public',
|
|
||||||
src: ['**/*'],
|
|
||||||
dest: 'www'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
clean: {
|
// task aliases
|
||||||
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: '<!--SCRIPTS-->',
|
|
||||||
endTag: '<!--SCRIPTS END-->',
|
|
||||||
fileTmpl: '<script src="%s"></script>',
|
|
||||||
appRoot: '.tmp/public'
|
|
||||||
},
|
|
||||||
files: {
|
|
||||||
'.tmp/public/**/*.html': jsFilesToInject,
|
|
||||||
'views/**/*.html': jsFilesToInject,
|
|
||||||
'views/**/*.ejs': jsFilesToInject
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
prodJs: {
|
|
||||||
options: {
|
|
||||||
startTag: '<!--SCRIPTS-->',
|
|
||||||
endTag: '<!--SCRIPTS END-->',
|
|
||||||
fileTmpl: '<script src="%s"></script>',
|
|
||||||
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: '<!--STYLES-->',
|
|
||||||
endTag: '<!--STYLES END-->',
|
|
||||||
fileTmpl: '<link rel="stylesheet" href="%s">',
|
|
||||||
appRoot: '.tmp/public'
|
|
||||||
},
|
|
||||||
|
|
||||||
// cssFilesToInject defined up top
|
|
||||||
files: {
|
|
||||||
'.tmp/public/**/*.html': cssFilesToInject,
|
|
||||||
'views/**/*.html': cssFilesToInject,
|
|
||||||
'views/**/*.ejs': cssFilesToInject
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
prodStyles: {
|
|
||||||
options: {
|
|
||||||
startTag: '<!--STYLES-->',
|
|
||||||
endTag: '<!--STYLES END-->',
|
|
||||||
fileTmpl: '<link rel="stylesheet" href="%s">',
|
|
||||||
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: '<!--TEMPLATES-->',
|
|
||||||
endTag: '<!--TEMPLATES END-->',
|
|
||||||
fileTmpl: '<script type="text/javascript" src="%s"></script>',
|
|
||||||
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']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// When Sails is lifted:
|
// When Sails is lifted:
|
||||||
grunt.registerTask('default', [
|
grunt.registerTask('default', [
|
||||||
@@ -422,13 +65,13 @@ module.exports = function (grunt) {
|
|||||||
grunt.registerTask('compileAssets', [
|
grunt.registerTask('compileAssets', [
|
||||||
'clean:dev',
|
'clean:dev',
|
||||||
'jst:dev',
|
'jst:dev',
|
||||||
|
'jade:templates',
|
||||||
'less:dev',
|
'less:dev',
|
||||||
'copy:dev',
|
'copy:dev',
|
||||||
'coffee:dev'
|
'coffee:dev'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
grunt.registerTask('linkAssets', [
|
grunt.registerTask('linkAssets', [
|
||||||
|
|
||||||
// Update link/script/template references in `assets` index.html
|
// Update link/script/template references in `assets` index.html
|
||||||
'sails-linker:devJs',
|
'sails-linker:devJs',
|
||||||
'sails-linker:devStyles',
|
'sails-linker:devStyles',
|
||||||
@@ -438,7 +81,6 @@ module.exports = function (grunt) {
|
|||||||
'sails-linker:devTplJADE'
|
'sails-linker:devTplJADE'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
// Build the assets into a web accessible folder.
|
// Build the assets into a web accessible folder.
|
||||||
// (handy for phone gap apps, chrome extensions, etc.)
|
// (handy for phone gap apps, chrome extensions, etc.)
|
||||||
grunt.registerTask('build', [
|
grunt.registerTask('build', [
|
||||||
|
|||||||
44
tasks/load-asv.js
Normal file
44
tasks/load-asv.js
Normal file
@@ -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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
7
tasks/options/clean.js
Normal file
7
tasks/options/clean.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// clean
|
||||||
|
module.exports = function(config) {
|
||||||
|
return {
|
||||||
|
dev: ['.tmp/public/**'],
|
||||||
|
build: ['www']
|
||||||
|
};
|
||||||
|
};
|
||||||
23
tasks/options/coffee.js
Normal file
23
tasks/options/coffee.js
Normal file
@@ -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'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
13
tasks/options/concat.js
Normal file
13
tasks/options/concat.js
Normal file
@@ -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'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
21
tasks/options/copy.js
Normal file
21
tasks/options/copy.js
Normal file
@@ -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'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
9
tasks/options/cssmin.js
Normal file
9
tasks/options/cssmin.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// cssmin
|
||||||
|
module.exports = function(config) {
|
||||||
|
return {
|
||||||
|
dist: {
|
||||||
|
src: ['.tmp/public/concat/production.css'],
|
||||||
|
dest: '.tmp/public/min/production.css'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
14
tasks/options/jade.js
Normal file
14
tasks/options/jade.js
Normal file
@@ -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'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
17
tasks/options/jst.js
Normal file
17
tasks/options/jst.js
Normal file
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
20
tasks/options/less.js
Normal file
20
tasks/options/less.js
Normal file
@@ -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'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
141
tasks/options/sails-linker.js
Normal file
141
tasks/options/sails-linker.js
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
// sails-linker
|
||||||
|
module.exports = function(config) { return {
|
||||||
|
devJs: {
|
||||||
|
options: {
|
||||||
|
startTag: '<!--SCRIPTS-->',
|
||||||
|
endTag: '<!--SCRIPTS END-->',
|
||||||
|
fileTmpl: '<script src="%s"></script>',
|
||||||
|
appRoot: '.tmp/public'
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
'.tmp/public/**/*.html': config.jsFilesToInject,
|
||||||
|
'views/**/*.html': config.jsFilesToInject,
|
||||||
|
'views/**/*.ejs': config.jsFilesToInject
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
prodJs: {
|
||||||
|
options: {
|
||||||
|
startTag: '<!--SCRIPTS-->',
|
||||||
|
endTag: '<!--SCRIPTS END-->',
|
||||||
|
fileTmpl: '<script src="%s"></script>',
|
||||||
|
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: '<!--STYLES-->',
|
||||||
|
endTag: '<!--STYLES END-->',
|
||||||
|
fileTmpl: '<link rel="stylesheet" href="%s">',
|
||||||
|
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: '<!--STYLES-->',
|
||||||
|
endTag: '<!--STYLES END-->',
|
||||||
|
fileTmpl: '<link rel="stylesheet" href="%s">',
|
||||||
|
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: '<!--TEMPLATES-->',
|
||||||
|
endTag: '<!--TEMPLATES END-->',
|
||||||
|
fileTmpl: '<script type="text/javascript" src="%s"></script>',
|
||||||
|
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']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};};
|
||||||
9
tasks/options/uglify.js
Normal file
9
tasks/options/uglify.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// uglify
|
||||||
|
module.exports = function(config) {
|
||||||
|
return {
|
||||||
|
dist: {
|
||||||
|
src: ['.tmp/public/concat/production.js'],
|
||||||
|
dest: '.tmp/public/min/production.js'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
17
tasks/options/watch.js
Normal file
17
tasks/options/watch.js
Normal file
@@ -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']
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user