kv-music/vite.config.ts
Daniel ade3191965 feat(build): enable source maps for better debugging
- Added sourcemap option to the build configuration
2026-03-19 15:06:25 -05:00

87 lines
3.2 KiB
TypeScript

import { defineConfig } from 'vite';
import { VitePWA } from 'vite-plugin-pwa';
import neutralino from 'vite-plugin-neutralino';
import authGatePlugin from './vite-plugin-auth-gate.js';
import path from 'path';
import uploadPlugin from './vite-plugin-upload.js';
import blobAssetPlugin from './vite-plugin-blob.js';
export default defineConfig(({ mode }) => {
const IS_NEUTRALINO = mode === 'neutralino';
return {
base: './',
worker: {
format: 'es',
},
resolve: {
alias: {
'!': '/node_modules',
pocketbase: '/node_modules/pocketbase/dist/pocketbase.es.js',
},
},
optimizeDeps: {
exclude: ['pocketbase', '@ffmpeg/ffmpeg', '@ffmpeg/util', 'taglib-wasm'],
external: ['taglib-wasm'],
},
server: {
fs: {
allow: ['.', 'node_modules'],
// host: true,
// allowedHosts: ['<your_tailscale_hostname>'], // e.g. pi5.tailf5f622.ts.net
},
},
// preview: {
// host: true,
// allowedHosts: ['<your_tailscale_hostname>'], // e.g. pi5.tailf5f622.ts.net
// },
build: {
outDir: 'dist',
emptyOutDir: true,
sourcemap: true,
},
plugins: [
IS_NEUTRALINO && neutralino(),
authGatePlugin(),
uploadPlugin(),
blobAssetPlugin(),
VitePWA({
registerType: 'prompt',
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg,json}'],
cleanupOutdatedCaches: true,
maximumFileSizeToCacheInBytes: 3 * 1024 * 1024, // 3 MiB limit
// Define runtime caching strategies
runtimeCaching: [
{
urlPattern: ({ request }) => request.destination === 'image',
handler: 'CacheFirst',
options: {
cacheName: 'images',
expiration: {
maxEntries: 100,
maxAgeSeconds: 60 * 24 * 60 * 60, // 60 Days
},
},
},
{
urlPattern: ({ request }) =>
request.destination === 'audio' || request.destination === 'video',
handler: 'CacheFirst',
options: {
cacheName: 'media',
expiration: {
maxEntries: 50,
maxAgeSeconds: 60 * 24 * 60 * 60, // 60 Days
},
rangeRequests: true, // Support scrubbing
},
},
],
},
includeAssets: ['discord.html'],
manifest: false, // Use existing public/manifest.json
}),
],
};
});