- Switch from deprecated Vue CLI plugin to `electron-vite` (see nklayman/vue-cli-plugin-electron-builder#1982) - Update main/preload scripts to use `index.cjs` filenames to support `"type": "module"`, resolving crash issue (#233). This crash was related to Electron not supporting ESM (see electron/asar#249, electron/electron#21457). - This commit completes migration to Vite from Vue CLI (#230). Structure changes: - Introduce separate folders for Electron's main and preload processes. - Move TypeHelpers to `src/` to mark tit as accessible by the rest of the code. Config changes: - Make `vite.config.ts` reusable by Electron configuration. - On electron-builder, use `--publish` flag instead of `-p` for clarity. Tests: - Add log for preload script loading verification. - Implement runtime environment sanity checks. - Enhance logging in `check-desktop-runtime-errors`.
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
/// <reference types="vitest" />
|
|
import { resolve } from 'path';
|
|
import { defineConfig, UserConfig } from 'vite';
|
|
import legacy from '@vitejs/plugin-legacy';
|
|
import vue from '@vitejs/plugin-vue2';
|
|
import ViteYaml from '@modyfi/vite-plugin-yaml';
|
|
import { getAliasesFromTsConfig, getClientEnvironmentVariables, getSelfDirectoryAbsolutePath } from './vite-config-helper';
|
|
|
|
const WEB_DIRECTORY = resolve(getSelfDirectoryAbsolutePath(), 'src/presentation');
|
|
const TEST_INITIALIZATION_FILE = resolve(getSelfDirectoryAbsolutePath(), 'tests/shared/bootstrap/setup.ts');
|
|
const NODE_CORE_MODULES = ['os', 'child_process', 'fs', 'path'];
|
|
|
|
export function createVueConfig(options?: {
|
|
readonly supportLegacyBrowsers: boolean,
|
|
}): UserConfig {
|
|
return {
|
|
root: WEB_DIRECTORY,
|
|
plugins: [
|
|
vue(),
|
|
ViteYaml(),
|
|
...[options?.supportLegacyBrowsers ? legacy() : undefined],
|
|
],
|
|
esbuild: {
|
|
supported: {
|
|
'top-level-await': true, // Exclude browsers not supporting top-level-await
|
|
},
|
|
},
|
|
define: {
|
|
...getClientEnvironmentVariables(),
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
...getAliasesFromTsConfig(),
|
|
},
|
|
},
|
|
build: {
|
|
rollupOptions: {
|
|
// Ensure Node core modules are externalized and don't trigger warnings in browser builds
|
|
external: {
|
|
...NODE_CORE_MODULES,
|
|
},
|
|
},
|
|
},
|
|
server: {
|
|
port: 3169,
|
|
},
|
|
test: {
|
|
globals: true,
|
|
environment: 'jsdom',
|
|
alias: {
|
|
...getAliasesFromTsConfig(),
|
|
},
|
|
setupFiles: [
|
|
TEST_INITIALIZATION_FILE,
|
|
],
|
|
},
|
|
};
|
|
}
|
|
|
|
export default defineConfig(createVueConfig({
|
|
supportLegacyBrowsers: true,
|
|
}));
|