vite-plugin-css-export
Para compartir tokens de diseño (colores, tamaños, breakpoints) entre tus estilos y tu código JavaScript sin duplicarlos.
Plugin de Vite para exportar variables de CSS, Sass, Less o Stylus a un objeto JavaScript.
Notas y contexto
Qué es
vite-plugin-css-export es un plugin de Vite creado por shixuanhong que permite leer desde JavaScript las variables declaradas en tus hojas de estilo. Funciona con CSS plano y con los preprocesadores Sass, Less y Stylus. Las propiedades que pongas dentro de un bloque :export quedan disponibles como un objeto al importar el archivo de estilos con el sufijo ?export. Está escrito en TypeScript, es open source con licencia MIT y se mantiene de forma activa.
Para qué sirve
- Mantener una única fuente de verdad para los tokens de diseño (colores, tipografías, breakpoints) y consumirlos tanto en CSS como en JS.
- Pasar valores definidos en los estilos a librerías de JavaScript que los necesitan, como un color para una gráfica o una animación.
- Reutilizar variables de Sass, Less o Stylus en la lógica de cliente sin reescribirlas a mano.
- Compartir variables comunes entre varios resultados con la opción
additionalDatay combinarlas con CSS Modules.
Cuándo usarlo
Encaja en proyectos con Vite donde el diseño vive en CSS o en un preprocesador y necesitas esos mismos valores en JavaScript, evitando que se desincronicen al duplicarlos. Si ya defines los tokens directamente en JS (por ejemplo en la configuración de Tailwind o en un objeto de tema) puede que no te aporte; este plugin brilla cuando la fuente de verdad está en los estilos.
Ejemplo
Instalación:
npm install vite-plugin-css-export -D
Configurar el plugin en Vite:
// vite.config.ts
import { defineConfig } from 'vite';
import ViteCSSExportPlugin from 'vite-plugin-css-export';
export default defineConfig({
plugins: [ViteCSSExportPlugin()],
});
Exportar variables desde CSS y leerlas en JS:
/* example.css */
:export {
fontColor: #333;
fontSize: 14px;
}
// main.ts
import cssResult from './example.css?export';
console.log(cssResult); // { fontColor: "#333", fontSize: "14px" }
Puntos clave
- Comparte variables entre estilos y JavaScript mediante el bloque
:export. - Compatible con CSS, Sass, Less y Stylus, incluyendo reglas anidadas y CSS Modules.
- Transforma nombres de propiedades con utilidades integradas (por ejemplo kebab-case a UpperCamelCase).
- Permite compartir datos comunes entre resultados con
additionalData, y opciones comoenableExportMergeysharedDataExportNamepara CSS Modules. - Ligero y sin dependencias de runtime: actúa en tiempo de compilación de Vite.
Ten en cuenta
- Es específico de Vite (compatible con Vite 5 a 8); no sirve para proyectos con Webpack u otros bundlers.
- Las variables salen como cadenas de texto (
"14px"), no como números, así que conviene convertirlas antes de usarlas en cálculos. - Si tu sistema de tokens ya vive en JavaScript, añadir este plugin puede ser una capa innecesaria.