rc-web@69: module.exports = function(grunt) { rc-web@69: var path = require('path'), rc-web@69: fs = require('fs'), rc-web@69: static = require('static'), rc-web@69: async = require('async'), rc-web@69: _ = require('underscore'); rc-web@69: rc-web@69: grunt.registerMultiTask('static', "Process files with static", function() { rc-web@69: var done = this.async(); rc-web@69: var config = this.data; rc-web@69: if (config.require) { rc-web@69: var deps = typeof config.require === 'string' ? [config.require] : config.require; rc-web@69: _.each(deps, function(dep) { rc-web@69: require(path.join(process.cwd(), dep))(static); rc-web@69: }); rc-web@69: } rc-web@69: async.series(_.map(config.build, function(source, target) { rc-web@69: return function(complete) { rc-web@69: var sources = typeof source === 'string' ? [source] : source, rc-web@69: output = ''; rc-web@69: async.series(sources.map(function(source) { rc-web@69: return function(next) { rc-web@69: static.transform(typeof source === 'object' ? source.file : source, function(buffer) { rc-web@69: output += buffer.toString(); rc-web@69: next(); rc-web@69: }, typeof source === 'object' ? source.context: undefined); rc-web@69: } rc-web@69: }), function() { rc-web@69: console.log('grunt.static: wrote ' + target); rc-web@69: grunt.file.write(target, output); rc-web@69: complete(); rc-web@69: }); rc-web@69: } rc-web@69: }), function() { rc-web@69: done(true); rc-web@69: }); rc-web@69: }); rc-web@69: };