fis3-prepackager-css2js
Version:
compile cssstyles into js module
40 lines (35 loc) • 1.18 kB
JavaScript
const _ = fis.util;
module.exports = function css2js(ret, conf, settings, opt) {
let INC_RE = settings.includeRE || /\.css$/;
const warpType = settings.warpType || 'cmd';
const tpl = _warpTemplate.call(this, warpType);
_.map(ret.ids, (key, val) => {
if (INC_RE.test(key) && /\.css$/.test(key)) {
const compiled = _.template(tpl);
const _content = _replaceChar.call(this, val._content);
val._content = compiled({ 'id': key, 'content': _content });
val.release += '.js';
ret.ids[key] = val;
return ret.ids[key];
}
});
};
function _warpTemplate(type) {
switch (type.toLowerCase()) {
case 'scrat':
return 'require.defineCSS(\'<%= id %>\', \'<%= content %>\');';
break;
case 'amd':
return 'define(\'<%= id %>\', function(){ return \'<%= content %>\' });';
break;
default:
return 'define(\'<%= id %>\', function(require, exports, module){ module.exports = \'<%= content %>\' });';
break;
}
}
// 防止 '"/ 等字符转义
function _replaceChar(char) {
return char.replace(/\//g, '\/').replace(/[\n|\r]/g, ' ').replace(/('|")/g, function ($1) {
return '\\' + $1;
});
}