@playform/compress
Para reducir el peso del build estático de un sitio Astro comprimiendo automáticamente HTML, CSS, JS, SVG, JSON e imágenes.
Integración de Astro que comprime el build estático: HTML, CSS, JavaScript, SVG, JSON e imágenes.
Notas y contexto
Qué es
Compress (@playform/compress) es una integración para Astro mantenida por PlayForm. Se engancha en el proceso de build y comprime los artefactos estáticos generados, reduciendo su tamaño antes del despliegue. Está escrita en TypeScript y se apoya en herramientas consolidadas para cada tipo de archivo. Solo actúa sobre el build estático y las rutas prerenderizadas, no sobre las peticiones en tiempo de ejecución.
Para qué sirve
- Minificar el HTML generado con html-minifier-terser.
- Comprimir CSS mediante csso o lightningcss.
- Minificar el JavaScript del bundle con terser.
- Optimizar imágenes (JPEG, PNG, WebP, AVIF y más) con sharp y SVG con svgo.
Cuándo usarlo
- Cuando tienes un sitio Astro estático o con rutas prerenderizadas y quieres reducir el peso final sin configurar manualmente cada minificador.
- Es útil como último paso del pipeline de build para exprimir el tamaño de los assets. Si solo necesitas optimizar imágenes, las utilidades nativas de Astro o un servicio de imágenes pueden bastar; Compress cubre además HTML, CSS, JS, SVG y JSON en una sola integración.
Ejemplo
Instalación con el asistente de Astro:
npx astro add @playform/compress
Uso básico en la configuración de Astro:
// astro.config.ts
export default {
integrations: [(await import('@playform/compress')).default()],
};
Desactivando o ajustando compresores concretos:
export default {
integrations: [
(await import('@playform/compress')).default({
CSS: true,
HTML: {
'html-minifier-terser': {
removeAttributeQuotes: false,
},
},
Image: true,
JavaScript: true,
SVG: true,
}),
],
};
Puntos clave
- Cubre HTML, CSS, JavaScript, SVG, JSON e imágenes con una sola integración.
- Cada compresor se puede activar, desactivar o configurar de forma individual.
- Permite filtrar archivos y apuntar a varios directorios de salida.
Ten en cuenta
- Solo comprime el build estático y las rutas prerenderizadas, no las respuestas dinámicas en tiempo de ejecución.
- Conviene colocarlo el último en la lista de integraciones para obtener mejores resultados.
- Se distribuye bajo licencia CC0-1.0 (dominio público), algo a tener en cuenta si tu proyecto exige una licencia con atribución.