forked from trent_larson/crowd-funder-for-time-pwa
# Commit Message for SharedArrayBuffer Platform Exclusion
fix: eliminate SharedArrayBuffer checks on non-web platforms * Add platform guard in AbsurdSqlDatabaseService to only initialize on web * Change singleton pattern from eager to lazy instantiation * Update worker import to use lazy singleton pattern * Prevents absurd-sql initialization on Electron/Capacitor platforms * Reduces console noise and memory footprint on desktop/mobile * Maintains full web platform functionality and performance Resolves SharedArrayBuffer-related console output on Electron platform while preserving all web features and maintaining clean architecture.
This commit is contained in:
130
vite.config.electron.mts
Normal file
130
vite.config.electron.mts
Normal file
@@ -0,0 +1,130 @@
|
||||
/**
|
||||
* @file Vite Configuration for Electron Platform
|
||||
* @author Matthew Raymer
|
||||
*
|
||||
* This configuration file sets up Vite for building the TimeSafari application
|
||||
* for the Electron desktop platform. It extends the common configuration with
|
||||
* electron-specific settings and optimizations.
|
||||
*
|
||||
* Key Features:
|
||||
* - Electron-specific platform detection
|
||||
* - Desktop-optimized build settings
|
||||
* - Capacitor-Electron plugin integration
|
||||
* - Native module support
|
||||
* - Desktop-specific asset handling
|
||||
*
|
||||
* Usage:
|
||||
* ```bash
|
||||
* vite build --config vite.config.electron.mts
|
||||
* ```
|
||||
*
|
||||
* Environment Variables:
|
||||
* - VITE_PLATFORM: Set to "electron"
|
||||
* - VITE_PWA_ENABLED: Disabled for desktop
|
||||
* - VITE_DISABLE_PWA: Enabled for desktop
|
||||
*/
|
||||
|
||||
import { defineConfig } from "vite";
|
||||
import { createBuildConfig } from "./vite.config.common.mts";
|
||||
|
||||
export default defineConfig(async () => {
|
||||
const baseConfig = await createBuildConfig("electron");
|
||||
|
||||
return {
|
||||
...baseConfig,
|
||||
|
||||
plugins: [
|
||||
...baseConfig.plugins || [],
|
||||
// Plugin to replace the main entry point for electron builds
|
||||
{
|
||||
name: 'electron-entry-point',
|
||||
transformIndexHtml(html) {
|
||||
return html.replace(
|
||||
'/src/main.web.ts',
|
||||
'/src/main.electron.ts'
|
||||
);
|
||||
}
|
||||
},
|
||||
// Plugin to handle Electron-specific configurations
|
||||
{
|
||||
name: 'electron-config',
|
||||
config(config) {
|
||||
// Suppress console warnings about missing source maps for external deps
|
||||
if (config.build && config.build.rollupOptions) {
|
||||
config.build.rollupOptions.onwarn = (warning, warn) => {
|
||||
// Suppress warnings about missing source maps for external modules
|
||||
if (warning.code === 'MISSING_GLOBAL_NAME' ||
|
||||
warning.message?.includes('sourcemap') ||
|
||||
warning.message?.includes('@capacitor-community/sqlite')) {
|
||||
return;
|
||||
}
|
||||
warn(warning);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
// Electron-specific entry point
|
||||
build: {
|
||||
...baseConfig.build,
|
||||
outDir: "dist",
|
||||
// Disable source maps for Electron to prevent DevTools warnings
|
||||
sourcemap: false,
|
||||
// Use the electron-specific main entry point
|
||||
rollupOptions: {
|
||||
...baseConfig.build?.rollupOptions,
|
||||
// Electron-specific externals
|
||||
external: [
|
||||
"electron",
|
||||
"@capacitor-community/electron",
|
||||
"better-sqlite3-multiple-ciphers"
|
||||
],
|
||||
output: {
|
||||
...baseConfig.build?.rollupOptions?.output,
|
||||
// Desktop can handle larger chunks
|
||||
manualChunks: {
|
||||
vendor: ["vue", "vue-router", "@vueuse/core"],
|
||||
crypto: ["@nostr/tools", "crypto-js"],
|
||||
ui: ["@fortawesome/vue-fontawesome"]
|
||||
}
|
||||
}
|
||||
},
|
||||
// Electron doesn't need ES module compatibility
|
||||
target: "node16",
|
||||
// Optimize for desktop performance
|
||||
chunkSizeWarningLimit: 2000
|
||||
},
|
||||
|
||||
// Electron-specific optimizations
|
||||
optimizeDeps: {
|
||||
...baseConfig.optimizeDeps,
|
||||
// Include electron-specific dependencies
|
||||
include: [
|
||||
...(baseConfig.optimizeDeps?.include || []),
|
||||
"@capacitor-community/electron"
|
||||
],
|
||||
// Exclude native modules that Electron will handle
|
||||
exclude: [
|
||||
...(baseConfig.optimizeDeps?.exclude || []),
|
||||
"better-sqlite3-multiple-ciphers",
|
||||
"electron"
|
||||
]
|
||||
},
|
||||
|
||||
// Electron doesn't need dev server configuration
|
||||
server: undefined,
|
||||
|
||||
// Desktop-specific environment
|
||||
define: {
|
||||
...baseConfig.define,
|
||||
'process.env.VITE_PLATFORM': JSON.stringify('electron'),
|
||||
'process.env.VITE_PWA_ENABLED': JSON.stringify(false),
|
||||
'process.env.VITE_DISABLE_PWA': JSON.stringify(true),
|
||||
// Electron-specific flags
|
||||
'__ELECTRON__': JSON.stringify(true),
|
||||
'__IS_DESKTOP__': JSON.stringify(true),
|
||||
'__USE_NATIVE_SQLITE__': JSON.stringify(true)
|
||||
}
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user