You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

60 lines
1.9 KiB

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]`
}
}
}
};
});