'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: /\.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