Files
RepoDructor/nuxt.config.ts
josedario87 e3e7374096
All checks were successful
build-and-deploy / build (push) Successful in 21s
build-and-deploy / deploy (push) Successful in 3s
fix(runtime-config): resolver MUSIC_DIR en tiempo de ejecución y no hornearlo en build; endpoints usan env absoluto o public fallback
2025-08-10 03:03:22 -06:00

147 lines
4.1 KiB
TypeScript

// https://nuxt.com/docs/api/configuration/nuxt-config
import { defineNuxtConfig } from 'nuxt/config'
export default defineNuxtConfig({
// Helpers
hooks: {},
compatibilityDate: '2025-08-02',
// Disable SSR completely to avoid hydration issues with client-side audio APIs
ssr: false,
devtools: {
enabled: true,
vscode: {},
timeline: {
enabled: true
}
},
// Server configuration for proxy compatibility
devServer: {
host: process.env.NUXT_HOST || '0.0.0.0',
port: process.env.NUXT_PORT ? Number(process.env.NUXT_PORT) : 3000,
https: false
},
// Additional development configuration for proxy
dev: process.env.NODE_ENV !== 'production',
// Vite configuration for HMR through proxy
vite: {
server: {
// Configure HMR via env when developing behind HTTPS proxy
hmr: process.env.NODE_ENV !== 'production' ? {
host: process.env.HMR_HOST || undefined,
clientPort: process.env.HMR_CLIENT_PORT ? Number(process.env.HMR_CLIENT_PORT) : undefined,
protocol: process.env.HMR_PROTOCOL || undefined
} : undefined
}
},
modules: [
'@vueuse/nuxt',
'@pinia/nuxt',
['@vite-pwa/nuxt', {
registerType: 'autoUpdate',
includeAssets: ['favicon.ico', 'logo.png', 'logo-192.png', 'logo-512.png', 'logo-maskable-512.png', 'icon.svg'],
workbox: process.env.NODE_ENV === 'production' ? {
navigateFallback: '/',
cleanupOutdatedCaches: true,
globPatterns: [
'**/*.{js,css,html,ico,png,svg}',
'_nuxt/**/*.{js,css}',
'assets/**/*.{png,jpg,jpeg,svg,gif,webp}'
],
runtimeCaching: [
{
urlPattern: /\.(png|jpg|jpeg|svg|gif|webp)$/,
handler: 'CacheFirst',
options: {
cacheName: 'images-cache',
expiration: {
maxEntries: 50,
maxAgeSeconds: 60 * 60 * 24 * 7 // 7 days
}
}
}
]
} : {
// Dev SW: configuración mínima y sin patrones problemáticos
navigateFallback: '/',
globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
globIgnores: ['**/_payload.json', '_nuxt/builds/**/*.json'],
},
client: {
installPrompt: true,
periodicSyncForUpdates: 20
},
devOptions: {
// Permite instalar SW en dev cuando se habilita explícitamente
enabled: process.env.PWA_DEV === 'true',
type: 'module',
navigateFallback: '/'
},
manifest: {
name: 'RepoDructor Music Player',
short_name: 'RepoDructor',
description: 'A beautiful glassmorphism music player for your local network',
theme_color: '#8b5cf6', // Purple from logo gradient
background_color: '#0f172a',
display: 'standalone',
orientation: 'portrait',
scope: '/',
start_url: '/',
categories: ['music', 'entertainment'],
lang: 'es',
dir: 'ltr',
icons: [
{
src: '/logo-192.png',
sizes: '192x192',
type: 'image/png',
purpose: 'any'
},
{
src: '/logo-512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any'
},
{
src: '/logo-maskable-512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'maskable'
},
{
src: '/logo-192.png',
sizes: '192x192',
type: 'image/png',
purpose: 'maskable'
}
]
}
}]
],
css: ['~/assets/css/main.css'],
// Nitro configuration for proxy support
nitro: {
experimental: {
wasm: true
},
prerender: {
crawlLinks: true,
routes: ['/']
},
// Development configuration for proxy
devProxy: process.env.NODE_ENV === 'development' ? {} : undefined
},
// Runtime configuration
runtimeConfig: {
public: {
musicPath: process.env.NUXT_PUBLIC_MUSIC_PATH || '/music'
}
},
})