/** * Webpack config for production electron main process */ import path from "path"; import webpack from "webpack"; import { merge } from "webpack-merge"; import TerserPlugin from "terser-webpack-plugin"; import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer"; import baseConfig from "./webpack.config.base"; import webpackPaths from "./webpack.paths"; import checkNodeEnv from "../scripts/check-node-env"; import deleteSourceMaps from "../scripts/delete-source-maps"; checkNodeEnv("production"); deleteSourceMaps(); const devtoolsConfig = process.env.DEBUG_PROD === "true" ? { devtool: "source-map", } : {}; const configuration: webpack.Configuration = { ...devtoolsConfig, mode: "production", target: "electron-main", entry: { main: path.join(webpackPaths.srcMainPath, "main.ts"), preload: path.join(webpackPaths.srcMainPath, "preload.ts"), }, output: { path: webpackPaths.distMainPath, filename: "[name].js", }, optimization: { minimize: true, minimizer: [ new TerserPlugin({ parallel: true, }), ], }, plugins: [ new BundleAnalyzerPlugin({ analyzerMode: process.env.ANALYZE === "true" ? "server" : "disabled", }), /** * Create global constants which can be configured at compile time. * * Useful for allowing different behaviour between development builds and * release builds * * NODE_ENV should be production so that modules do not perform certain * development checks */ new webpack.EnvironmentPlugin({ NODE_ENV: "production", DEBUG_PROD: false, START_MINIMIZED: false, }), ], /** * Disables webpack processing of __dirname and __filename. * If you run the bundle in node.js it falls back to these values of node.js. * https://github.com/webpack/webpack/issues/2010 */ node: { __dirname: false, __filename: false, }, }; export default merge(baseConfig, configuration);