text: 'use strict'
  
  process.env.BABEL_ENV = 'main'
  
  const path = require('path')
  const { dependencies } = require('../package.json')
  const webpack = require('webpack')
  
  const BabiliWebpackPlugin = require('babili-webpack-plugin')
  
  let mainConfig = {
    entry: {
      main: path.join(__dirname, '../src/main/index.js')
    },
    externals: [
      ...Object.keys(dependencies || {})
    ],
    module: {
      rules: [
        {
          test: /\.worker\.js$/,
          use: { loader: 'worker-loader' }
        },
        {
          test: /\.js$/,
          use: 'babel-loader',
          exclude: /node_modules/
        },
        {
          test: /\.node$/,
          use: 'node-loader'
        }
      ]
    },
    node: {
      __dirname: process.env.NODE_ENV !== 'production',
      __filename: process.env.NODE_ENV !== 'production'
    },
    output: {
      filename: '[name].js',
      libraryTarget: 'commonjs2',
      path: path.join(__dirname, '../dist/electron')
    },
    plugins: [
      new webpack.NoEmitOnErrorsPlugin()
    ],
    resolve: {
      extensions: ['.js', '.json', '.node']
    },
    target: 'electron-main'
  }
  
  /**
   * Adjust mainConfig for development settings
   */
  if (process.env.NODE_ENV !== 'production') {
    mainConfig.plugins.push(
      new webpack.DefinePlugin({
        '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
      })
    )
  }
  
  /**
   * Adjust mainConfig for production settings
   */
  if (process.env.NODE_ENV === 'production') {
    mainConfig.plugins.push(
      new BabiliWebpackPlugin(),
      new webpack.DefinePlugin({
        'process.env.NODE_ENV': '"production"'
      })
    )
  }
  
  module.exports = mainConfig
  