
Estoy compilando componentes Svelte con Rollup, pero cuando miro el fichero generado por cada componente estoy viendo que me está metiendo dependencias de ficheros que no debería porque importo en el componente como three shake.
Alguna idea?
Es decir, desde los componentes estoy importando funciones de ficheros .js mediante imports tree shake. Esas funciones no tienen dependencias ni nada, pero como en ese fichero hay otras funciones que sí que tienen dependencias con librerías, me las está metiendo en el bundle
Tampoco hago nada extraño, simplemente compilo a webcomponents y en output lo tengo puesto en "iife" para que se autoejecute y tenga un fichero con todo el bundle.
He probado con preserveModules a true pero no me vale porque mantiene los imports a otros ficheros
Es que menudo asco de compiladores y de mierdas macho, veníamos de webpack que era lo peor y rollup tampoco es que sea mucho mejor, y su documentación es una mierda porque está todo en una única página sin buscador
Por cierto no me recomendéis Vite o esbuild que ya los he probado, pero no tienen tantas opciones y config como Rollup, y eso que Vite usa Rollup por debajo
Actualización: He probado con Vite y su plugin de svelte, y simplemente con la opción de webcomponents a true me tira este error
[rollup-plugin-dynamic-import-variab les] Unexpected token (1:0).
Tampoco tira con el plugin de rollup de svelte dentro de la config de Vite
Rollup tiene una opción para poder configurar dependencias externas para que no se incluyan en el bundle pero tiene dos problemas, uno es que hay que poner a mano el nombre de las dependencias, y el otro es que te sigue dejando el require en el bundle.
Osea lo curioso es eso, que miro el bundle, y aunque me hace el tree-shaking bien porque no me incluye el resto de las funciones del fichero, si que me incluye el código fuente de las dependencias, a pesar de que no las use en el componente.
He logrado reproducir lo que me ocurre, al menos no estoy loco.
En el bundle mete la dependencia a pesar de que solo se importa una función de ese fichero que no la usa.
Estaba convencido de que el tree-shake no te incluía este tipo de dependencias.
Nueva actualización: Rollup mete las dependencias externas aunque no se usen por si tienen side-effects, se puede quitar con la opción de treeshake.moduleSideEffects pero nuevamente hay otro problema, también se carga los imports de los componentes internos que importas