Prevención de Barrel Files y Optimización de Paquetes
Los archivos de barril (index.ts que reexportan cientos de módulos) provocan que Vite y Rolldown tengan que parsear árboles masivos de dependencias, ralentizando el arranque en desarrollo y aumentando el tamaño final del bundle estático.
1. Importación Directa por Módulo
En lugar de reexportar todo desde un punto central:
// ANTIPATRÓN: Carga el módulo entero con decenas de subrutinas
import { buttonProps, cardProps, modalProps } from '@/data/all-props';
// PATRÓN RECOMENDADO: Importa quirúrgicamente solo lo necesario
import { buttonProps } from '@/data/component-props.ts';
import { buttonSnippet } from '@/data/component-snippets.ts';2. Componentes de Iconografía
En src/components/Icon.astro, se utiliza un despachador switch tipado con SVGs internos vectoriales en vez de instalar paquetes masivos de miles de iconos (como lucide-react completo):
---
export interface Props {
name: 'terminal' | 'copy' | 'check' | 'external' | 'chevron-down' | 'search';
class?: string;
size?: number;
}
const { name, class: className = '', size = 16 } = Astro.props;
---
{name === 'terminal' && (
<svg class={className} width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="4 17 10 11 4 5"></polyline>
<line x1="12" y1="19" x2="20" y2="19"></line>
</svg>
)}Regla de Oro
- Mantén
0 KiBde bibliotecas de iconos de terceros en runtime. Todo icono debe ser inline o despachado porIcon.astro.