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).
This commit is contained in:
@@ -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 MAIN_ENTRY_FILE = resolvePathFromProjectRoot('src/presentation/electron/main/index.ts');
|
||||||
const PRELOAD_ENTRY_FILE = resolvePathFromProjectRoot('src/presentation/electron/preload/index.ts');
|
const PRELOAD_ENTRY_FILE = resolvePathFromProjectRoot('src/presentation/electron/preload/index.ts');
|
||||||
const WEB_INDEX_HTML_PATH = resolvePathFromProjectRoot('src/presentation/index.html');
|
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({
|
export default defineConfig({
|
||||||
main: getSharedElectronConfig({
|
main: getSharedElectronConfig({
|
||||||
distDirSubfolder: 'main',
|
distDirSubfolder: ELECTRON_DIST_SUBDIRECTORIES.main,
|
||||||
entryFilePath: MAIN_ENTRY_FILE,
|
entryFilePath: MAIN_ENTRY_FILE,
|
||||||
}),
|
}),
|
||||||
preload: getSharedElectronConfig({
|
preload: getSharedElectronConfig({
|
||||||
distDirSubfolder: 'preload',
|
distDirSubfolder: ELECTRON_DIST_SUBDIRECTORIES.preload,
|
||||||
entryFilePath: PRELOAD_ENTRY_FILE,
|
entryFilePath: PRELOAD_ENTRY_FILE,
|
||||||
}),
|
}),
|
||||||
renderer: mergeConfig(
|
renderer: mergeConfig(
|
||||||
@@ -25,7 +31,7 @@ export default defineConfig({
|
|||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
build: {
|
build: {
|
||||||
outDir: resolve(DIST_DIR, 'renderer'),
|
outDir: ELECTRON_DIST_SUBDIRECTORIES.renderer,
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
input: {
|
input: {
|
||||||
index: WEB_INDEX_HTML_PATH,
|
index: WEB_INDEX_HTML_PATH,
|
||||||
@@ -42,7 +48,7 @@ function getSharedElectronConfig(options: {
|
|||||||
}): UserConfig {
|
}): UserConfig {
|
||||||
return {
|
return {
|
||||||
build: {
|
build: {
|
||||||
outDir: resolve(DIST_DIR, options.distDirSubfolder),
|
outDir: options.distDirSubfolder,
|
||||||
lib: {
|
lib: {
|
||||||
entry: options.entryFilePath,
|
entry: options.entryFilePath,
|
||||||
},
|
},
|
||||||
@@ -64,6 +70,11 @@ function getSharedElectronConfig(options: {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function resolvePathFromProjectRoot(pathSegment: string) {
|
function resolvePathFromProjectRoot(pathSegment: string): string {
|
||||||
return resolve(__dirname, pathSegment);
|
return resolve(__dirname, pathSegment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function resolveElectronDistSubdirectory(subDirectory: string): string {
|
||||||
|
const electronDistDir = resolvePathFromProjectRoot(distDirs.electronUnbundled);
|
||||||
|
return resolve(electronDistDir, subDirectory);
|
||||||
|
}
|
||||||
|
|||||||
14
package-lock.json
generated
14
package-lock.json
generated
@@ -38,7 +38,7 @@
|
|||||||
"electron-builder": "^24.6.4",
|
"electron-builder": "^24.6.4",
|
||||||
"electron-devtools-installer": "^3.2.0",
|
"electron-devtools-installer": "^3.2.0",
|
||||||
"electron-icon-builder": "^2.0.1",
|
"electron-icon-builder": "^2.0.1",
|
||||||
"electron-vite": "^1.0.27",
|
"electron-vite": "^1.0.28",
|
||||||
"eslint": "^8.51.0",
|
"eslint": "^8.51.0",
|
||||||
"eslint-plugin-cypress": "^2.15.1",
|
"eslint-plugin-cypress": "^2.15.1",
|
||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.17.0",
|
||||||
@@ -7144,9 +7144,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-vite": {
|
"node_modules/electron-vite": {
|
||||||
"version": "1.0.27",
|
"version": "1.0.28",
|
||||||
"resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.27.tgz",
|
"resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.28.tgz",
|
||||||
"integrity": "sha512-T8UVt9HtMFMMqU78dhv8TsRHYxMkuMTIZBIFYHzfeEoJ1Go3tVemgY/kO6sTTv94jIhkhcZIkvwmq4liABFjmA==",
|
"integrity": "sha512-cp7nBi6do/jn5SHdL2V71WjxqZ+NXitVqn5bW+TsTEYgAfSUuYYp6INJN854kcgoOj4UrjMqA9cGRTSl79xx0Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.22.8",
|
"@babel/core": "^7.22.8",
|
||||||
@@ -25087,9 +25087,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-vite": {
|
"electron-vite": {
|
||||||
"version": "1.0.27",
|
"version": "1.0.28",
|
||||||
"resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.27.tgz",
|
"resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-1.0.28.tgz",
|
||||||
"integrity": "sha512-T8UVt9HtMFMMqU78dhv8TsRHYxMkuMTIZBIFYHzfeEoJ1Go3tVemgY/kO6sTTv94jIhkhcZIkvwmq4liABFjmA==",
|
"integrity": "sha512-cp7nBi6do/jn5SHdL2V71WjxqZ+NXitVqn5bW+TsTEYgAfSUuYYp6INJN854kcgoOj4UrjMqA9cGRTSl79xx0Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/core": "^7.22.8",
|
"@babel/core": "^7.22.8",
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
"description": "Enforce privacy & security best-practices on Windows, macOS and Linux, because privacy is sexy 🍑🍆",
|
"description": "Enforce privacy & security best-practices on Windows, macOS and Linux, because privacy is sexy 🍑🍆",
|
||||||
"author": "undergroundwires",
|
"author": "undergroundwires",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist-electron-unbundled/main/index.cjs",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vue-tsc --noEmit && vite build",
|
"build": "vue-tsc --noEmit && vite build",
|
||||||
@@ -63,7 +62,7 @@
|
|||||||
"electron-builder": "^24.6.4",
|
"electron-builder": "^24.6.4",
|
||||||
"electron-devtools-installer": "^3.2.0",
|
"electron-devtools-installer": "^3.2.0",
|
||||||
"electron-icon-builder": "^2.0.1",
|
"electron-icon-builder": "^2.0.1",
|
||||||
"electron-vite": "^1.0.27",
|
"electron-vite": "^1.0.28",
|
||||||
"eslint": "^8.51.0",
|
"eslint": "^8.51.0",
|
||||||
"eslint-plugin-cypress": "^2.15.1",
|
"eslint-plugin-cypress": "^2.15.1",
|
||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.17.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user