diff --git a/Dockerfile b/Dockerfile index 1b24f84..e97ed4e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,6 +17,8 @@ RUN bun install # Prepare and install web dependencies COPY apps/web/package.json apps/web/ WORKDIR /app/apps/web +# No instalar optionalDependencies (better-sqlite3) en build de producción +ENV npm_config_optional=false RUN bun install # Copy sources diff --git a/apps/web/package.json b/apps/web/package.json index 1231481..8ade05d 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -23,7 +23,7 @@ "typescript": "^5.9.2", "vite": "^7.1.7" }, - "dependencies": { + "optionalDependencies": { "better-sqlite3": "^12.4.1" } } diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 245ce0c..3e1c6a8 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,14 +1,22 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; -export default defineConfig({ - plugins: [sveltekit()], - ssr: { - // Evita que Node intente resolver el esquema 'bun:' durante el build SSR - external: ['bun:sqlite'] - }, - optimizeDeps: { - // No prebundlear 'bun:sqlite' en dev - exclude: ['bun:sqlite'] - } +export default defineConfig(({ mode }) => { + const isDev = mode === 'development'; + + return { + plugins: [sveltekit()], + resolve: { + // En desarrollo, alias para usar better-sqlite3 (Vite/HMR no entiende 'bun:sqlite') + alias: isDev ? { 'bun:sqlite': 'better-sqlite3' } : {} + }, + ssr: { + // En producción, evitar que Node intente resolver el esquema 'bun:' + external: isDev ? [] : ['bun:sqlite'] + }, + optimizeDeps: { + // No prebundlear 'bun:sqlite' (no aplica en dev si alias está activo, pero es inofensivo) + exclude: ['bun:sqlite'] + } + }; });