tianma-unicorn
Version:
The Pegasus module for Unicorn System.
77 lines (72 loc) • 1.95 kB
JavaScript
var UCC = require('ucc');
/**
* Mount pipelines to compiler per mode.
* @param compiler {Object}
*/
var MOUNT = {
'dev': function (compiler) {
compiler
.mount('.js', [
'decode', 'dependency', 'nocomment',
'modular', 'stamp', 'encode' ])
.mount('.css', [
'decode', 'dependency', 'stamp', 'nocomment', 'encode' ])
.mount('.json', [
'decode', 'json', 'encode' ])
.mount('.tpl', [
'decode', 'template', 'encode' ]);
},
'test': function (compiler) {
compiler
.mount('.js', [
'decode', 'dependency', 'nocomment',
'modular', 'stamp', 'minify', 'encode' ])
.mount('.css', [
'decode', 'dependency', 'stamp', 'minify', 'encode' ])
.mount('.json', [
'decode', 'json', 'encode' ])
.mount('.tpl', [
'decode', 'template', 'encode' ]);
}
};
/**
* Generate a compiler.
* @param config {Object}
* @return {Object}
*/
exports.generate = function (config) {
var compiler = new UCC({
options: {
'modular': {
'alias': config.alias,
'whitelist': config.modules
}
},
reader: function (pathname, callback) {
config.req.url('/'+ pathname)(function (err) {
if(err || config.res.status() != 200){
callback(null);
}else{
callback({
pathname: pathname,
data: config.res.data(),
mtime: new Date(config.res.head('last-modified')).getTime()
});
}
});
},
writer: function (file, callback) {
if (file.data) {
config.cache[file.pathname] = {
data : file.data,
mtime: file.mtime
};
}
callback();
}
});
if (config.mode in MOUNT) {
MOUNT[config.mode](compiler);
}
return compiler;
};