Skip to content

Add-ons

Although electron-webpack is provided as a single module, you can also install add-ons. Add-ons are made available to help setup certain frameworks that may require a lot of extra configuration or dependencies, such as TypeScript or Vue.js.

These add-ons are completely optional and may not support all use cases. If you need something more custom, please know that the entirety of webpack‘s documentation still applies to electron-webpack (more info).

Current Add-ons:


JavaScript Frameworks

Vue.js

Adds support for Vue component files through the use of vue-loader. In addition, vue-devtools will also be installed for development purposes.

yarn add vue electron-webpack-vue --dev

Adding TypeScript support

Install the TypeScript add-on, followed by adding the below file to shim Vue component files.

declare module '*.vue' {
  import Vue from 'vue'
  export default Vue
}

And of course, make sure to let vue-loader know you want to use TypeScript in your component file using the lang="ts" attribute.

<template></template>

<script lang="ts">
  /* your TypeScript code */
</script>

<style></style>

Adding ESLint support

Install the ESLint add-on, install eslint-plugin-html, and add the following additional configurations.

Install html plugin to lint Vue component files:

yarn add eslint-plugin-html --dev

module.exports = {
  plugins: [
    'html'
  ]
}

React JSX

Add support for compiling JSX files:

yarn add @babel/preset-react --dev

Adding TypeScript support for JSX (.tsx files)

Install the TypeScript add-on, followed by extending your tsconfig.json to include the jsx compiler option as below:

{
    "extends": "./node_modules/electron-webpack/tsconfig-base.json",
    "compilerOptions": {
        "jsx": "react"
    }
}

Pre-processors

Babel

@babel/preset-env is automatically configured based on your electron version.

All direct dev dependencies babel-preset-* and babel-plugin-* are automatically configured also.

ESLint

Add support for script file linting using eslint. Internally uses eslint, eslint-loader, eslint-friendly-formatter, and makes babel-eslint available if needed.

yarn add electron-webpack-eslint --dev

Create .eslintrc.js in the root directory:

module.exports = {
  /* your base configuration of choice */
  extends: 'eslint:recommended',

  parser: 'babel-eslint',
  parserOptions: {
    sourceType: 'module'
  },
  env: {
    browser: true,
    node: true
  },
  globals: {
    __static: true
  }
}

TypeScript

Add support for compiling TypeScript script files. Internally uses both ts-loader and fork-ts-checker-webpack-plugin to compile *.ts. Note that entry files can also use the *.ts extension.

yarn add typescript electron-webpack-ts --dev

Create tsconfig.json in the root directory:

{
  "extends": "./node_modules/electron-webpack/tsconfig-base.json"
}

Less

Add support for compiling Less style files.

yarn add less less-loader --dev

Sass/SCSS

Add support for compiling Sass/SCSS style files.

yarn add node-sass sass-loader --dev

EJS

Add support for compiling EJS template files.

yarn add ejs ejs-html-loader --dev

Nunjucks

Add support for compiling Nunjucks template files:

yarn add nunjucks nunjucks-loader --dev

UI Libraries

iView

Once you have the Vue.js add-on installed, electron-webpack will internally support iView’s “import on demand” feature. No further setup is necessary.

Element

Once you have the element-ui installed, electron-webpack will internally support Element’s “import on demand” feature. No further setup is necessary.


Miscellaneous

Build Notifications

Provide OS-level notifications from webpack during development.

yarn add webpack-build-notifier --dev