79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
/** plugin builder for requirejs optimization
|
|
*/
|
|
|
|
define(function() {
|
|
|
|
var fs = require.nodeRequire('fs');
|
|
|
|
function loadfile (url, callback) {
|
|
var file = fs.readFileSync(url, 'utf8');
|
|
//Remove BOM (Byte Mark Order) from utf8 files if it is there.
|
|
if (file.indexOf('\uFEFF') === 0) {
|
|
file = file.substring(1);
|
|
}
|
|
callback(file);
|
|
};
|
|
|
|
function strip (content) {
|
|
return content.replace(/[\r\n]+/g," ").replace(/[\t]/g," ");
|
|
}
|
|
|
|
var buildMap = {};
|
|
var writeonce = false;
|
|
|
|
var loader =
|
|
{
|
|
load: function (name, require, load, config) {
|
|
//console.log('css-build: load: '+name);
|
|
load(true);
|
|
loadfile(config.baseUrl+name,function(F){
|
|
buildMap[name]=strip(F);
|
|
});
|
|
},
|
|
|
|
write: function (pluginName, moduleName, write, config) {
|
|
|
|
if( !writeonce)
|
|
{
|
|
writeonce=true;
|
|
write(
|
|
"define('"+pluginName+"-embed', function()\n{\n"+
|
|
"\tfunction embed_css(content)\n"+
|
|
"\t{\n"+
|
|
"\t\tvar head = document.getElementsByTagName('head')[0],\n"+
|
|
"\t\tstyle = document.createElement('style'),\n"+
|
|
"\t\trules = document.createTextNode(content);\n"+
|
|
"\t\tstyle.type = 'text/css';\n"+
|
|
"\t\tif(style.styleSheet)\n"+
|
|
"\t\t\tstyle.styleSheet.cssText = rules.nodeValue;\n"+
|
|
"\t\telse style.appendChild(rules);\n"+
|
|
"\t\t\thead.appendChild(style);\n"+
|
|
"\t}\n"+
|
|
"\treturn embed_css;\n"+
|
|
"});\n"
|
|
);
|
|
}
|
|
|
|
write(
|
|
"define('"+pluginName+'!'+moduleName+"', ['"+pluginName+"-embed'], \n"+
|
|
"function(embed)\n{\n"+
|
|
"\tembed(\n\t'"+buildMap[moduleName].replace(/'/g, "\\'")+"'\n\t);\n"+
|
|
"\treturn true;\n"+
|
|
"});\n"
|
|
);
|
|
},
|
|
|
|
writeFile: function (pluginName, moduleName, write)
|
|
{
|
|
//console.log('css-build: writeFile');
|
|
},
|
|
|
|
onLayerEnd: function (write, data)
|
|
{
|
|
//console.log('css-build: onLayerEnd');
|
|
}
|
|
};
|
|
|
|
return loader;
|
|
});
|