Espero poder hacer esta pregunta de manera algo congruente. Estoy en una situación en la que mi compilación de producción vite no funciona, pero la compilación de desarrollo sí.
Estoy en un sitio renderizado estáticamente, dentro de un site de carpeta, que luego es tomado por vite para crear el resultado final. Trabajo principalmente en una subcarpeta _svelte . Allí también tengo una carpeta llamada api que contiene algunas funciones que me gustaría usar fuera de svelte.
En site , hay otra página html, digamos test/index.html . Esa página contiene un <script type="module"> , que luego importa estas funciones desde /_svelte/api .
Ahora, todo esto funciona en desarrollo, pero en producción, el paquete para test/index.html contiene referencias a las rutas de script, como en /_svelte/api , etc. Pero estos archivos nunca existen, por lo que todo falla.
La configuración de mi vite se ve así:
export default defineConfig(({ command, mode }) => { if (command === 'build') { // these are all entry files for vite const files = fg.sync('**/*.html', { cwd: process.env.ROOT, absolute: true, }); const external = fg.sync('../_svelte/**/*.ts', { cwd: process.env.ROOT, absolute: true, }) .map((file) => file.replace(`${__dirname}/site`, '')) .filter((file) => !file.includes('main') && !file.includes('vite-env.d.ts')) .map((file) => file.replace('.ts', '')); return { plugins: [svelte({ configFile: '../../svelte.config.js' })], root: process.env.ROOT, build: { publicDir: '../public', rollupOptions: { input: { main: resolve(process.env.ROOT, 'index.html'), ...Object.fromEntries( files.map((file) => [basename(file.replace('/index', ''), '.html'), file]) ), }, external, }, }, }; } });Espero que esta información sea suficiente para ayudarme de alguna manera en esta situación. No estoy seguro de cómo solucionarlo, todo es bastante opaco.