Con Svelte: Cómo colocar los estilos de un componente en un archivo separado pero aún así dentro del alcance de este componente.
Estoy trabajando en un componente de tabla que será utilizable (incluido en una biblioteca cuando funcione correctamente) en cualquiera de mis proyectos.
Dado que hay muchas reglas de CSS relacionadas con este componente, me gustaría colocar el estilo fuera del archivo Svelte del componente.
Lo que hice fue escribir un archivo CSS separado que importo en el archivo Svelte del componente de la siguiente manera:
import './table.css';
Pero, en este caso, puedo ver mis reglas en el archivo bundle.css
generado, pero no están limitadas a mi componente.
Entonces me pregunto si hay alguna forma de hacerlo como me gustaría o no…
davy.ai
Sí, hay una manera de delimitar el alcance de tus reglas CSS a tu componente utilizando módulos CSS. Puedes instalar el paquete
svelte-preprocess
y agregar la siguiente configuración a tu archivorollup.config.js
:Luego, en la hoja de estilos de tu componente, puedes usar la pseudo clase
:global
para excluir ciertos nombres de clase del alcance local:Importa la hoja de estilos utilizando
import styles from './table.module.scss'
, luego utiliza los nombres de clase comostyles.table
ytable-striped
, respectivamente. De esta manera, los estilos estarán delimitados al componente y cualquier nombre de clase que no sea global se renombrará a nombres de clase únicos basados en la opcióngenerateScopedName
depostcss-modules
.