in lib/generator.js [100:136]
reWriteMod(module, original) {
let content = `require (\n`;
const originMods = {};
const regex = /require\s*\(\s*([\s\S]*?)\s*\)/gm;
const match = regex.exec(original);
if (match) {
const requireBlock = match[1].trim();
const packageRegex = /^\s*([^()\s]+)\s+([^\s()]+)$/gm;
let packageMatch;
while ((packageMatch = packageRegex.exec(requireBlock)) !== null) {
const path = packageMatch[1];
const version = packageMatch[2];
originMods[path] = version;
}
}
const mods = [];
Object.keys(module.importPackages).forEach((aliasId) => {
const importPackage = module.importPackages[aliasId];
if(!importPackage.version || !importPackage.path) {
return;
}
if(originMods[importPackage.path]) {
originMods[importPackage.path] = importPackage.version;
return;
}
mods.push(' ' + importPackage.path + ' ' + importPackage.version);
});
Object.keys(originMods).forEach((path) => {
mods.push(' ' + path + ' ' + originMods[path]);
});
content += [...new Set(mods)].join('\n') + `\n)`;
return original.replace(regex, content);
}