Files
CTM-Concierge/vite.config.js
T

74 lines
2.2 KiB
JavaScript

import { rmSync } from 'node:fs'
import path from 'node:path'
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import electron from 'vite-plugin-electron/simple'
import pkg from './package.json'
export default defineConfig(({ command }) => {
// Clean compiled Electron output on each build to avoid stale artefacts
rmSync('dist-electron', { recursive: true, force: true })
const isServe = command === 'serve'
const isBuild = command === 'build'
const sourcemap = isServe || !!process.env.VSCODE_DEBUG
return {
resolve: {
alias: { '@': path.join(__dirname, 'src') },
},
plugins: [
react(),
electron({
main: {
// Main process entry — compiled to dist-electron/main/index.js
entry: 'electron/main/index.js',
onstart(args) {
if (process.env.VSCODE_DEBUG) {
console.log('[startup] Electron App')
} else {
args.startup()
}
},
vite: {
build: {
sourcemap,
minify: isBuild,
outDir: 'dist-electron/main',
rollupOptions: {
// Keeps runtime dependencies out of the main bundle
external: Object.keys(pkg.dependencies ?? {}),
},
},
},
},
preload: {
// Preload script — compiled to dist-electron/preload/index.cjs
// Explicit CJS output is required: root package.json has "type":"module",
// which makes Node.js treat .js and .mjs as ESM; .cjs is always CJS.
input: 'electron/preload/index.js',
vite: {
build: {
sourcemap: sourcemap ? 'inline' : undefined,
minify: isBuild,
outDir: 'dist-electron/preload',
rollupOptions: {
external: Object.keys(pkg.dependencies ?? {}),
output: {
format: 'cjs',
entryFileNames: '[name].cjs',
},
},
},
},
},
// Polyfills Node built-ins used in the renderer process
renderer: {},
}),
],
clearScreen: false,
}
})