// import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer' import HtmlWebpackPlugin from 'html-webpack-plugin' import webpack from 'webpack' import { fileURLToPath } from 'url' import { dirname } from 'path' const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) const isDevelopment = process.env.NODE_ENV !== 'production' export default { entry: { app: './src/index.tsx', bugtracking: './src/utils/bugtracking.ts', }, output: { chunkFilename: isDevelopment ? '[name].js' : '[name].[contenthash:8].js', filename: isDevelopment ? '[name].bundle.js' : '[name].[contenthash:8].bundle.js', path: `${__dirname}/build`, pathinfo: false, }, optimization: { minimize: !isDevelopment, removeAvailableModules: false, removeEmptyChunks: false, runtimeChunk: isDevelopment ? false : 'single', splitChunks: isDevelopment ? false : { chunks: 'all', minSize: 30000, minChunks: 1, maxAsyncRequests: 5, maxInitialRequests: 3, automaticNameDelimiter: '~', cacheGroups: { vendors: { test: /[\\/]node_modules[\\/](react|react-dom|@material-ui|popper\.js|react|react-redux|prop-types|jss|redux|scheduler|react-transition-group)[\\/]/, name: 'vendors', chunks: 'all', priority: -10, }, default: { name: 'default', minChunks: 2, priority: -20, reuseExistingChunk: true, }, }, }, }, devServer: { hot: true, liveReload: false, }, target: 'electron-renderer', mode: isDevelopment ? 'development' : 'production', devtool: isDevelopment ? 'eval-cheap-module-source-map' : 'source-map', resolve: { extensions: ['.ts', '.mjs', '.m.js', '.tsx', '.js', '.json', '.node'], }, module: { rules: [ { test: /\.tsx?$/, use: [ { loader: 'ts-loader', options: { transpileOnly: true, experimentalWatchApi: true, }, }, ], exclude: /node_modules/, }, ...(isDevelopment ? [] : [{ enforce: 'pre', test: /\.js$/, loader: 'source-map-loader', exclude: /node_modules\/ace-builds/, }]), { test: /\.css$/, use: ['style-loader', 'css-loader'], }, { test: /\.(png|jpg|gif)$/i, type: 'asset/resource', }, ], }, plugins: [ new HtmlWebpackPlugin({ template: './index.html', file: './build/index.html', inject: false }), new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'), }), ], externals: {}, cache: { type: 'filesystem', buildDependencies: { config: [__filename], }, }, performance: { hints: isDevelopment ? false : 'warning', }, stats: isDevelopment ? 'errors-warnings' : 'normal', }