Skip to content

Dll Bundle Splitting

One great feature of using webpack is being able to take advantage of the webpack.DllPlugin plugin. If you are unfamiliar with the webpack.DllPlugin plugin, make sure to read its documentation to better understand what problem it attempts to solve. In short, this can be used to drastically improve build time performance.

Through custom configurations electron-webpack provides a place to define specific packages you would like to create a separate bundle for. You can treat this feature as a way to bundle all of your vendor libraries together.

Once you have defined your modules, you can simply run electron-webpack dll to produce a vendor bundle that will be referenced in your final compilation. Let’s go through that step-by-step.

Define your modules

Here we are defining our modules in package.json. If you prefer, you can also create a separate file for your configurations (more info).

{
  "electronWebpack": {
    "renderer": {
      "dll": [
        "fooModule",
        "barModule"
      ]
    }
  }
}

Create the vendor bundle

Once you have choosen your selected modules, you can run the below command to create your vendor bundle.

electron-webpack dll

It may be beneficial to create a package.json script for this command if you plan to use it often.

{
  "scripts": {
    "compile:dll": "electron-webpack dll"
  }
}

Final Notes

Now that your vendor bundle is created, you can move forward with the standard electron-webpack compilation process.

Please know that the vendor bundle is only created when you explicity run electron-webpack dll. For most cases, you may only need to run this one time. But as you add/remove modules or even update those modules, you will need to re-run the command to create an updated bundle.

Using a postinstall hook

One common practice when using Dll bundle splitting to define a postinstall command to create the vendor bundle whenever new dependecies are installed. This can help ensure everything is up to date so you don’t have to manually run this yourself.

{
  "scripts": {
    "postinstall": "electron-webpack dll"
  }
}