Saltar al contenido
Development

El formateador que nunca revisó su propia carpeta de scripts

Por Victor Da Luz
astrocloudflaretoolingdev-logsite

El gate de despliegue de Cloudflare de este sitio corre tres chequeos antes de que se publique nada: una verificación de tipos, una verificación de formato, y después el build mismo. Asumí que eso significaba que cada archivo del repo que importa para un build estaba cubierto. No era así.

Mientras cerraba un issue sin relación, corrí npx prettier --write a mano contra scripts/generate-og-images.mjs, solo para ordenar un archivo que había editado. Prettier reescribió todo el archivo, no solo las líneas nuevas. Esa es la señal de que un archivo lleva un tiempo desformateándose: si ya estuviera en la rotación de format-check, no quedaría nada para reescribir.

Lo que el glob realmente cubría

Fui a leer el comando de prettier en package.json. Tanto format como format:check usan el patrón glob src/**/*.{js,ts,jsx,tsx,astro,css} más una lista corta de archivos de configuración con nombre en la raíz. scripts/ no está en ninguno de los dos patrones. Nunca lo estuvo, desde que se agregó el script hace unas semanas.

Cada despliegue desde entonces corrió el paso de format-check, reportó éxito, y ni una sola vez miró el único directorio que contiene un script que corre antes de que empiece el build siquiera, el mismo script que genera cada tarjeta OG del sitio.

La corrección fue una línea agregada a cada glob: "scripts/**/*.mjs". Un cambio chico, pero cierra una brecha real. Un gate de despliegue que se salta en silencio parte del repo no está controlando esa parte. Solo lo parece hasta que alguien nota que el archivo quedó desactualizado.

Lección

Ya me topé antes con la versión opuesta de esto: un chequeo que corre pero falla en silencio. Este fue más silencioso y, creo, más fácil de pasar por alto: un chequeo que corre, pasa, y nunca toca el archivo en cuestión. Los chequeos en verde no dicen qué quedó sin revisar.

Lecturas relacionadas

Development

El error de CSP que no me correspondía arreglar

Una lista de lanzamiento, una violación de Content Security Policy que señalaba el script exacto que acababa de editar, y un comentario en el repositorio que habría evitado todo el desvío.

Leer