shortify
Version:
rewrites require paths with defined aliases
44 lines (37 loc) • 966 B
JavaScript
;
var PAIRS = [
// `require(""`
{
query: ['require[(]([\'"])', '([^\'"]*)([\'"])'],
replace: ['require($1', '$3$4']
},
// ` from ""`
{
query: ['[\\s]from[\\s]([\'"])', '([^\'"]*)([\'"])'],
replace: [' from $1', '$3$4']
},
// `import "";`
{
query: ['import[\\s]([\'"])', '([^\'"]*)([\'"])'],
replace: ['import $1', '$3$4']
}
];
module.exports = function (options) {
options = options || {};
return function(source) {
for (var key in options) {
if (!options.hasOwnProperty(key)) {
continue;
}
PAIRS.forEach(function (params) {
var query = params.query;
var replace = params.replace;
var searchTerm = query[0] + '(' + key + ')' + query[1];
var replaceTerm = replace[0] + options[key] + replace[1];
var regex = new RegExp(searchTerm, 'g');
source = source.replace(regex, replaceTerm);
});
}
return source;
};
};