En ~1 mes, astro-font
ha aumentado a 57.000 descargas 🤯
Punto de control n.° 1
Todo comenzó cuando pensé en lo que le falta al ecosistema Astro. Después de revisar algunos de los sitios web (incluido mi propio sitio web híbrido Astro, launchfast), descubrí que faltaba una biblioteca de optimización de fuentes de extremo a extremo 👇
Punto de control #2
Así que me propuse crear un paquete Astro que cumpliera la promesa que pensé que sería súper fácil: usar los scripts next/font
de @vercel y enviarlo (¡y lo hice desde el principio!) ¡Funcionó muy bien para sitios web estáticos! PERO, ingrese a los sitios web de SSR👇
Barricada #1
next/font
, al estar acoplado con el proceso de compilación de Next, tiene acceso a los directorios de salida y a la configuración de tiempo de ejecución esperada y, por lo tanto, aloja automáticamente las fuentes incluso en los sitios web SSR-first. Este espacio se volvió más complejo para los sitios web de Astro SSR a medida que astro- font
es un componente de Astro y no una integración de Astro. Esto es lo que hice para resolver ese problema 👇
Barricada #2
¡Excelente! Eso funcionó y me permitió determinar si la compilación SSR tenía fuentes incluidas y, por lo tanto, me permitió calcular la fuente alternativa en el tiempo de ejecución, PERO, algunos usuarios querían usar URL de CDN o estaban usando fuentes de fuente. No había forma de saberlo. qué Vite resolvió las fuentes internas. Por lo tanto, construí un analizador CSS en tiempo de ejecución similar a Google Fonts 👇
Punto de control n.º 3
Parece completo, ¿verdad? Ahora funciona con fuentes locales y fuentes a través de CDN, pero la búsqueda y computación en tiempo de ejecución nos costará tiempo SSR. Para resolver eso, ingrese el almacenamiento en caché de fuentes en tiempo de ejecución 👇
Punto de control #4
¿Ahora? ¡Solo nos queda una cosa por hacer: Permitir precargas por fuente por configuración (y soporte hacia atrás para precargas globales (no))!
Y terminamos, y está en producción para muchos sitios web de Astro ✨
<typeof import(‘node:os’) | undefined><string | undefined>¡Gracias por ese increíble paquete que me ayudó a luchar contra el “cambio de diseño”!
Lo agregaré a Best of JS, ya que tenemos una etiquetaAstro
[[ HTML_TAG]]https://tco/38Akqa5IQd[[HTML_TAG] ]
— Michael Rambeau (@michaelrambeau) 17 de enero de 2024