Files
social-media/frontend/vite.config.js

67 lines
1.9 KiB
JavaScript

import { fileURLToPath, URL } from 'node:url'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import fs from 'fs';
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
import { resolve } from 'path'
import { visualizer } from 'rollup-plugin-visualizer'
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
// Load environment variables based on the mode
const env = loadEnv(mode, process.cwd(), '')
return {
plugins: [
visualizer({
filename: './dist/stats.html',
open: true, // Automatically opens in browser
gzipSize: true,
brotliSize: true,
}),
vue(),
VueI18nPlugin({
include: resolve(__dirname, 'src/locales/**')
})
],
server: {
https: {
key: fs.readFileSync('localhost-key.pem'),
cert: fs.readFileSync('localhost.pem'),
},
port: 5173, // Ensure this matches your WebStorm debug URL
open: true, // Automatically opens the browser
host: '0.0.0.0',
},
build: {
sourcemap: true, // Enable source maps for debugging
rollupOptions: {
output: {
manualChunks: {
vue: ['vue'],
vuetify: ['vuetify'],
vendor: ['lodash', 'axios'], // adjust based on your deps
vuedraggable: ['vuedraggable']
},
format: 'es',
entryFileNames: '[name].[hash].js',
chunkFileNames: '[name].[hash].js',
assetFileNames: '[name].[hash].[ext]'
}
}
},
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
define: {
// Define a global constant __APP_ENV__ based on loaded environment variables
VITE_API_URL: JSON.stringify(env.VITE_API_URL),
VITE_STRIPE_API_KEY: JSON.stringify(env.VITE_STRIPE_API_KEY)
},
json: {
stringify: false
}
}
})