reWriteMod()

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);
  }