const webpack = require('webpack') const { merge } = require('webpack-merge') const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin') const CopyPlugin = require('copy-webpack-plugin') const nodeExternals = require('webpack-node-externals') const baseConfig = require('./webpack.base.config') module.exports = merge(baseConfig, { target: 'electron-main', entry: { main: './src/main/main.ts', preload: './src/main/preload.ts', }, resolve: { plugins: [new TsconfigPathsPlugin({})], }, externals: [nodeExternals()], module: { rules: [ { test: /\.ts$/, exclude: /node_modules/, loader: 'babel-loader', options: { cacheDirectory: true, babelrc: false, presets: [ ['@babel/preset-env', { targets: 'maintained node versions' }], '@babel/preset-typescript', ], plugins: [ ['@babel/plugin-proposal-decorators', { legacy: true }], ['@babel/plugin-proposal-class-properties', { loose: true }], ['@babel/plugin-proposal-private-methods', { loose: true }], [ '@babel/plugin-proposal-private-property-in-object', { loose: true }, ], ], }, }, ], }, plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify( process.env.NODE_ENV || 'development', ), }), new CopyPlugin({ patterns: [{ from: 'src/assets', to: 'assets' }], }), ], })