From d6da406c61e5b9f5408851d1302d6d7398157a2e Mon Sep 17 00:00:00 2001 From: undergroundwires Date: Sun, 22 Oct 2023 15:03:58 +0200 Subject: [PATCH] Centralize Electron entry file path configuration This commit refactors configuration to use centrally defined Electron entry file path to improve maintainability and reduce duplication. - Replace the hardcoded file path in the `main` field of `package.json` with a reference to the `ELECTRON_ENTRY` environment variable, managed by `electron-vite`. - Update `electron-vite` to version 1.0.28, enabling the use of `ELECTRON_ENTRY` environment variable feature (details in alex8088/electron-vite#270). --- electron.vite.config.ts | 23 +++++++++++++++++------ package-lock.json | 14 +++++++------- package.json | 3 +-- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/electron.vite.config.ts b/electron.vite.config.ts index 93de7dcd..02f397b5 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -8,15 +8,21 @@ import distDirs from './dist-dirs.json' assert { type: 'json' }; const MAIN_ENTRY_FILE = resolvePathFromProjectRoot('src/presentation/electron/main/index.ts'); const PRELOAD_ENTRY_FILE = resolvePathFromProjectRoot('src/presentation/electron/preload/index.ts'); const WEB_INDEX_HTML_PATH = resolvePathFromProjectRoot('src/presentation/index.html'); -const DIST_DIR = resolvePathFromProjectRoot(distDirs.electronUnbundled); +const ELECTRON_DIST_SUBDIRECTORIES = { + main: resolveElectronDistSubdirectory('main'), + preload: resolveElectronDistSubdirectory('preload'), + renderer: resolveElectronDistSubdirectory('renderer'), +}; + +process.env.ELECTRON_ENTRY = resolve(ELECTRON_DIST_SUBDIRECTORIES.main, 'index.cjs'); export default defineConfig({ main: getSharedElectronConfig({ - distDirSubfolder: 'main', + distDirSubfolder: ELECTRON_DIST_SUBDIRECTORIES.main, entryFilePath: MAIN_ENTRY_FILE, }), preload: getSharedElectronConfig({ - distDirSubfolder: 'preload', + distDirSubfolder: ELECTRON_DIST_SUBDIRECTORIES.preload, entryFilePath: PRELOAD_ENTRY_FILE, }), renderer: mergeConfig( @@ -25,7 +31,7 @@ export default defineConfig({ }), { build: { - outDir: resolve(DIST_DIR, 'renderer'), + outDir: ELECTRON_DIST_SUBDIRECTORIES.renderer, rollupOptions: { input: { index: WEB_INDEX_HTML_PATH, @@ -42,7 +48,7 @@ function getSharedElectronConfig(options: { }): UserConfig { return { build: { - outDir: resolve(DIST_DIR, options.distDirSubfolder), + outDir: options.distDirSubfolder, lib: { entry: options.entryFilePath, }, @@ -64,6 +70,11 @@ function getSharedElectronConfig(options: { }; } -function resolvePathFromProjectRoot(pathSegment: string) { +function resolvePathFromProjectRoot(pathSegment: string): string { return resolve(__dirname, pathSegment); } + +function resolveElectronDistSubdirectory(subDirectory: string): string { + const electronDistDir = resolvePathFromProjectRoot(distDirs.electronUnbundled); + return resolve(electronDistDir, subDirectory); +} diff --git a/package-lock.json b/package-lock.json index 6fc2dc5f..233ad300 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "electron-builder": "^24.6.4", "electron-devtools-installer": "^3.2.0", "electron-icon-builder": "^2.0.1", - "electron-vite": "^1.0.27", + "electron-vite": "^1.0.28", "eslint": "^8.51.0", "eslint-plugin-cypress": "^2.15.1", "eslint-plugin-vue": "^9.17.0", @@ -7144,9 +7144,9 @@ } }, "node_modules/electron-vite": { - "version": "1.0.27", - "resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.27.tgz", - "integrity": "sha512-T8UVt9HtMFMMqU78dhv8TsRHYxMkuMTIZBIFYHzfeEoJ1Go3tVemgY/kO6sTTv94jIhkhcZIkvwmq4liABFjmA==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.28.tgz", + "integrity": "sha512-cp7nBi6do/jn5SHdL2V71WjxqZ+NXitVqn5bW+TsTEYgAfSUuYYp6INJN854kcgoOj4UrjMqA9cGRTSl79xx0Q==", "dev": true, "dependencies": { "@babel/core": "^7.22.8", @@ -25087,9 +25087,9 @@ } }, "electron-vite": { - "version": "1.0.27", - "resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.27.tgz", - "integrity": "sha512-T8UVt9HtMFMMqU78dhv8TsRHYxMkuMTIZBIFYHzfeEoJ1Go3tVemgY/kO6sTTv94jIhkhcZIkvwmq4liABFjmA==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.28.tgz", + "integrity": "sha512-cp7nBi6do/jn5SHdL2V71WjxqZ+NXitVqn5bW+TsTEYgAfSUuYYp6INJN854kcgoOj4UrjMqA9cGRTSl79xx0Q==", "dev": true, "requires": { "@babel/core": "^7.22.8", diff --git a/package.json b/package.json index 58b7057f..6e3418a1 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "description": "Enforce privacy & security best-practices on Windows, macOS and Linux, because privacy is sexy 🍑🍆", "author": "undergroundwires", "type": "module", - "main": "./dist-electron-unbundled/main/index.cjs", "scripts": { "dev": "vite", "build": "vue-tsc --noEmit && vite build", @@ -63,7 +62,7 @@ "electron-builder": "^24.6.4", "electron-devtools-installer": "^3.2.0", "electron-icon-builder": "^2.0.1", - "electron-vite": "^1.0.27", + "electron-vite": "^1.0.28", "eslint": "^8.51.0", "eslint-plugin-cypress": "^2.15.1", "eslint-plugin-vue": "^9.17.0",