CodeCoupler Webpack Multiple Entrypoints
If you need to create multiple files you have to set this in the Webpack configuration to override
the generated values:
|  | {
  entry: {
    YourLibrary: "./src/index.js",
    YourLibrary_Extension: "./src/extension.js"
  },
  output: {
    filename: "[name].js",
    library: {
      name: "[name]"
    }
  }
}
 | 
If you are importing stylesheets you mus also override the default filename that will be used by the
mini-css-ectract-plugin. You can set this in the CodeCoupler Webpack configuration:
|  | plugins: {
  MiniCssExtractPlugin: {
    filename: "css/[name].css"
  }
}
 | 
Check if in your package.json you to include these new assets:
|  | {
  "files": [
    "dist/YourLibrary.js",
    "dist/YourLibrary.css",
    "dist/YourLibrary_Extension.js",
    "dist/YourLibrary_Extension.css",
  ],  
}
 | 
The file names and the global names of the individual libraries are generated from the property
names of the entry object.
You can also write them in kebab-case, which leads to nicer file names but ugly library names.
If possible keep Pascal-case and rewrite the filenames in kebap-case. For this extend the property
output.filename in the Webpack configuration:
|  | {
  entry: {
    YourLibrary: "./src/index.js",
    YourLibrary_Extension: "./src/extension.js"
  },
  output: {
    filename: (e) => {
      return (
        e.runtime
          .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
          .replace(/([A-Z])([A-Z])(?=[a-z])/g, "$1-$2")
          .toLowerCase() + ".js"
      );
    },
    library: {
      name: "[name]"
    }
  }
};
 | 
You can even return paths to put all your extensions in an own subdirectory:
|  | {
  entry: {
    YourLibrary: "./src/index.js",
    YourLibrary_Extension: "./src/extension.js"
  },
  output: {
    filename: (e) => {
      return (
        e.runtime
          .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
          .replace(/([A-Z])([A-Z])(?=[a-z])/g, "$1-$2")
          .toLowerCase() + ".js"
      ).replace("your-library_Extension", "extensions/");
    },
    library: {
      name: "[name]"
    }
  }
};
 | 
If needed you can specify individual library names by using the entry properties as objects:
|  | {
  entry: {
    YourLibrary: {
      import: "./src/index.js",
      library: {
        name: "[name]",
        type: "umd"
      }
    },
    YourLibrary_Extension: {
      import: "./src/extension.js",
      library: {
        name: "[name]",
        type: "umd"
      }
    }
  },
  output: {
    filename: (e) => {
      return (
        e.runtime
          .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
          .replace(/([A-Z])([A-Z])(?=[a-z])/g, "$1-$2")
          .toLowerCase() + ".js"
      ).replace("your-library_Extension", "extensions/");
    },
  }
};
 |