import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import path from "path"; import { fileURLToPath } from 'url'; // Determine if we're building for mobile based on environment variable const isMobile = process.env.VITE_PLATFORM === 'capacitor'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default defineConfig(({ mode }) => { return { plugins: [vue()], resolve: { alias: { '@': path.resolve(__dirname, './src'), 'nostr-tools': path.resolve(__dirname, 'node_modules/nostr-tools'), 'nostr-tools/nip06': path.resolve(__dirname, 'node_modules/nostr-tools/nip06'), 'nostr-tools/core': path.resolve(__dirname, 'node_modules/nostr-tools/core'), 'crypto': path.resolve(__dirname, 'node_modules/crypto-browserify'), 'stream': path.resolve(__dirname, 'node_modules/stream-browserify'), 'buffer': path.resolve(__dirname, 'node_modules/buffer/'), }, mainFields: ['module', 'jsnext:main', 'jsnext', 'main'], }, optimizeDeps: { include: [ 'crypto-browserify', 'stream-browserify', 'buffer' ] }, define: { __USE_QR_READER__: JSON.stringify(!isMobile), __IS_MOBILE__: JSON.stringify(isMobile), }, build: { sourcemap: true, target: 'esnext', chunkSizeWarningLimit: 1000, commonjsOptions: { include: [/node_modules/], transformMixedEsModules: true }, rollupOptions: { external: isMobile ? ['vue-qrcode-reader'] : [], output: { globals: { stream: 'stream', util: 'util', crypto: 'crypto' }, entryFileNames: `[name]${isMobile ? '-mobile' : ''}.js`, chunkFileNames: `[name]${isMobile ? '-mobile' : ''}.js`, assetFileNames: `[name]${isMobile ? '-mobile' : ''}.[ext]` } } } }; });