forked from jsnbuchanan/crowd-funder-for-time-pwa
- Update certificate view canvas rendering and QR code generation - Upgrade dependencies (expo-file-system, expo-font, expo-keep-awake) - Fix type imports for nostr-tools and dexie-export-import - Update vite config for better dependency resolution - Clean up main entry points (capacitor, electron, pywebview) - Improve error handling in API and plan services - Add type safety to API error handling - Update build configuration for platform-specific builds This is a work in progress commit focusing on certificate view improvements and dependency maintenance. Some type definitions and build configurations may need further refinement.
74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import { defineConfig } from "vite";
|
|
import vue from "@vitejs/plugin-vue";
|
|
import dotenv from "dotenv";
|
|
import { loadAppConfig } from "./vite.config.utils.mts";
|
|
import path from "path";
|
|
import { fileURLToPath } from 'url';
|
|
|
|
// Load environment variables
|
|
dotenv.config();
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
export async function createBuildConfig(mode: string) {
|
|
const appConfig = await loadAppConfig();
|
|
const isElectron = mode === "electron";
|
|
const isCapacitor = mode === "capacitor";
|
|
const isPyWebView = mode === "pywebview";
|
|
|
|
// Explicitly set platform
|
|
process.env.VITE_PLATFORM = mode;
|
|
|
|
if (isElectron || isPyWebView || isCapacitor) {
|
|
process.env.VITE_PWA_ENABLED = 'false';
|
|
}
|
|
|
|
return {
|
|
base: isElectron || isPyWebView ? "./" : "/",
|
|
plugins: [vue()],
|
|
server: {
|
|
port: parseInt(process.env.VITE_PORT || "8080"),
|
|
fs: { strict: false },
|
|
},
|
|
build: {
|
|
outDir: isElectron ? "dist-electron" : "dist",
|
|
assetsDir: 'assets',
|
|
chunkSizeWarningLimit: 1000,
|
|
rollupOptions: {
|
|
external: isCapacitor ? ['@capacitor/app'] : []
|
|
}
|
|
},
|
|
define: {
|
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
|
|
'process.env.VITE_PLATFORM': JSON.stringify(mode),
|
|
'process.env.VITE_PWA_ENABLED': JSON.stringify(!(isElectron || isPyWebView || isCapacitor)),
|
|
__dirname: isElectron ? JSON.stringify(process.cwd()) : '""',
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
...appConfig.aliasConfig,
|
|
'nostr-tools/nip06': mode === 'development'
|
|
? 'nostr-tools/nip06'
|
|
: path.resolve(__dirname, 'node_modules/nostr-tools/nip06'),
|
|
'nostr-tools/core': mode === 'development'
|
|
? 'nostr-tools'
|
|
: path.resolve(__dirname, 'node_modules/nostr-tools'),
|
|
'nostr-tools': path.resolve(__dirname, 'node_modules/nostr-tools'),
|
|
'dexie-export-import': path.resolve(__dirname, 'node_modules/dexie-export-import')
|
|
}
|
|
},
|
|
optimizeDeps: {
|
|
include: ['nostr-tools', 'nostr-tools/nip06', 'nostr-tools/core', 'dexie-export-import'],
|
|
exclude: isElectron ? [
|
|
'register-service-worker',
|
|
'workbox-window',
|
|
'web-push',
|
|
'serviceworker-webpack-plugin'
|
|
] : []
|
|
}
|
|
};
|
|
}
|
|
|
|
export default defineConfig(async () => createBuildConfig('web'));
|