import path from 'path' ; import { Configuration } from 'webpack' ; import HtmlWebpackPlugin from 'html-webpack-plugin' ; import MiniCssExtractPlugin from 'mini-css-extract-plugin' ; const base = { mode : 'production' , node : { __dirname : false , __filename : false , } , resolve : { extensions : [ '.js' , '.ts' , '.jsx' , '.tsx' , '.json' ] , } , output : { path : path . resolve ( __dirname , 'dist' ) , publicPath : './' , filename : '[name].js' , assetModuleFilename : 'images/[name][ext]' , } , module : { rules : [ { test : /\.tsx?$/ , exclude : /node_modules/ , use : [ { loader : 'ts-loader' } , { loader : 'ifdef-loader' , options : { DEBUG : false } } , ] , } , { test : /\.s?css$/ , use : [ MiniCssExtractPlugin . loader , { loader : 'css-loader' , options : { sourceMap : false , importLoaders : 1 , } , } , { loader : 'sass-loader' , options : { sourceMap : false , } , } , ] , } , { test : /\.(bmp|ico|gif|jpe?g|png|svg|ttf|eot|woff?2?)$/ , type : 'asset/resource' , } , ] , } , stats : 'errors-only' , performance : { hints : false } , optimization : { minimize : true } , devtool : undefined , } ; const main = { ... base , target : 'electron-main' , entry : { main : './src/main.ts' , } , } ; const preload = { ... base , target : 'electron-preload' , entry : { preload : './src/preload.ts' , } , } ; const renderer = { ... base , target : 'web' , entry : { index : './src/web/index.tsx' , } , plugins : [ new MiniCssExtractPlugin ( ) , new HtmlWebpackPlugin ( { template : './src/web/index.html' , minify : true , inject : 'body' , filename : 'index.html' , scriptLoading : 'blocking' , } ) , ] , } ; export default [ main , preload , renderer ] ;