weg-hook-commonjs
Version:
weg commonJs module
52 lines (45 loc) • 1.51 kB
JavaScript
var lang = fis.compile.lang;
var rRequire = /"(?:[^\\"\r\n\f]|\\[\s\S])*"|'(?:[^\\'\n\r\f]|\\[\s\S])*'|(\/\/[^\r\n\f]+|\/\*[\s\S]+?(?:\*\/|$))|\b(require\.async|require)\s*\(\s*("(?:[^\\"\r\n\f]|\\[\s\S])*"|'(?:[^\\'\n\r\f]|\\[\s\S])*'|\[[\s\S]*?\])\s*/g;
module.exports = function(info) {
var content = info.content;
var file = info.file;
file.requireSourcePaths = [];
info.content = content.replace(rRequire, function(m, comment, type, params) {
if (type) {
switch (type) {
case 'require.async':
var info = parseParams(params);
m = 'require.async([' + info.params.map(function(v) {
var type = lang.jsAsync;
return type.ld + v + type.rd;
}).join(',') + ']';
break;
case 'require':
file.requireSourcePaths.push(params);
var info = parseParams(params);
var async = info.hasBrackets;
m = 'require(' + (async ? '[' : '') + info.params.map(function(v) {
var type = lang[async ? 'jsAsync' : 'jsRequire'];
return type.ld + v + type.rd;
}).join(',') + (async ? ']' : '');
break;
}
}
return m;
});
}
function parseParams(value) {
var hasBrackets = false;
var params = [];
value = value.trim().replace(/(^\[|\]$)/g, function(m, v) {
if (v) {
hasBrackets = true;
}
return '';
});
params = value.split(/\s*,\s*/);
return {
params: params,
hasBrackets: hasBrackets
};
}