Incorporar presupuestos de rendimiento en el proceso de compilación

Una vez que hayas definido un presupuesto de rendimiento, es momento de configurar el proceso de creación para hacer un seguimiento de ellos. Hay varias herramientas que te permiten definir umbrales para las métricas de rendimiento elegidas y advertirte si superas el presupuesto. Descubrir cómo elegir la que mejor se adapte a tus necesidades y a tu configuración actual. 🕵️‍♀️

Presupuestos de rendimiento de Lighthouse

Lighthouse es una herramienta de auditoría que prueba sitios en algunas áreas clave: rendimiento, accesibilidad, prácticas recomendadas y qué tan bien funciona tu sitio como aplicación web progresiva.

La versión de línea de comandos de Lighthouse (v5 y versiones posteriores) admite la configuración de presupuestos de rendimiento en función de lo siguiente:

  • tamaño del recurso
  • recuento de recursos

Puedes establecer presupuestos para cualquiera de los siguientes tipos de recursos:

  • document
  • font
  • image
  • media
  • other
  • script
  • stylesheet
  • third-party
  • total

Los presupuestos se establecen en un archivo JSON y, después de definirlos, establece el nuevo indica si estás excediendo algún límite.

Sección Presupuestos del informe de Lighthouse
“Presupuestos” en el informe de Lighthouse
.

Sugerencias de rendimiento del paquete web

Webpack es una potente herramienta de compilación para optimizar la forma en que se entrega tu código a los usuarios. También permite establecer presupuestos de rendimiento en función del tamaño del recurso.

Activa las sugerencias de rendimiento en webpack.config.js para recibir advertencias o errores de la línea de comandos cuando el tamaño del paquete supere el límite. Es una excelente manera de tener en cuenta el tamaño de los recursos durante el desarrollo.

Después del paso de compilación, webpack genera una lista de elementos codificada por colores y sus tamaños. Todo lo que supere el presupuesto se destaca en amarillo.

Resultado del paquete web en el que se destaca bundle.js
El bundle.js destacado es mayor que tu presupuesto
.

El límite predeterminado para los recursos y los puntos de entrada es 250 KB. Puedes establecer tus propios objetivos en el archivo de configuración.

Advertencia de tamaño del paquete del paquete web
Advertencia sobre el tamaño del paquete del paquete web ⚠️
.

Los presupuestos se comparan con los tamaños de recursos sin comprimir. El tamaño de JavaScript sin comprimir está relacionado con el tiempo de ejecución y los archivos grandes pueden demorar mucho tiempo en ejecutarse, especialmente en dispositivos móviles.

Recomendación de optimización del rendimiento del paquete web
Además, webpack no solo te advertirá, sino que también te recomendará cómo reducir el tamaño de tus paquetes. 💁

Tamaño del paquete

Bundlesize es un paquete de npm simple que prueba el tamaño de los elementos en función del umbral que estableciste. Puede ejecutarse de forma local y, además, integrarse a tu CI.

CLI de tamaño de paquete

Ejecuta la CLI de tamaño de paquete especificando un umbral y el archivo que quieras probar.

bundlesize -f "dist/bundle.js" -s 170kB

Bundlesize genera los resultados de las pruebas codificados por color en una línea.

Falló la prueba de la CLI de tamaño de paquete
Falló la prueba de la CLI de tamaño de paquete ❌
.
Pasando la prueba de tamaño de paquete de la CLI
Pasando la prueba de tamaño de paquete de CLI ✔️
.

Tamaño del paquete para CI

Obtendrás el máximo valor del tamaño del paquete si lo integras con una CI para aplicar automáticamente los límites de tamaño en las solicitudes de extracción. Si la prueba de tamaño de paquete falla, esa solicitud de extracción no se combina. Funciona para las solicitudes de extracción en GitHub con Travis CI, CircleCI, Wercker y Drone.

Estado de la verificación del tamaño del paquete en GitHub
Estado de la verificación del tamaño del paquete en GitHub
.

Es posible que hoy tengas una app rápida, pero agregar código nuevo puede cambiar esta situación. Verificar las solicitudes de extracción con bundlesize te ayudará a evitar las regresiones de rendimiento. Bootstrap, Tinder, Trivago y muchos otros lo usan para controlar sus presupuestos.

Con el tamaño del paquete, es posible establecer umbrales para cada archivo por separado. Esto es especialmente útil si estás dividiendo un paquete en tu aplicación.

De forma predeterminada, prueba los tamaños de los elementos comprimidos. Puedes usar la opción de compresión para cambiar a la compresión de brotli o desactivarla por completo.

bot de Lighthouse

bot de Lighthouse

El bot de Lighthouse se integra en Travis CI y aplica presupuestos en función de cualquiera de las cinco categorías de auditoría de Lighthouse. Por ejemplo, un presupuesto de 100 para tu puntuación de rendimiento de Lighthouse. A veces, es más sencillo supervisar un solo número que los presupuestos de recursos individuales y las puntuaciones de Lighthouse tienen muchas cosas en cuenta.

Puntajes de Lighthouse ✅
Puntajes de Lighthouse ✅
.

Lighthouse Bot ejecuta una auditoría después de que implementas un sitio en el servidor de etapa de pruebas. En .travis.yml, establece presupuestos para categorías particulares de Lighthouse con las opciones --perf, --a11y, --bp, --seo o --pwa. Procura permanecer en la zona verde con puntuaciones de al menos 90.

after_success:
  - ./deploy.sh # Deploy the PR changes to staging server
  - npm run lh -- --perf=96 https://staging.example.com # Run Lighthouse test

Si las puntuaciones de una solicitud de extracción en GitHub son inferiores al umbral que estableciste, el bot de Lighthouse puede evitar que se combine la solicitud de extracción. ⛔

Estado de verificación del bot de Lighthouse en GitHub
Estado de verificación del bot de Lighthouse en GitHub
.

El bot de Lighthouse luego comenta tu solicitud de extracción con las puntuaciones actualizadas. Esta es una función genial que fomenta la conversación sobre el rendimiento a medida que se producen cambios en el código.

Puntuaciones de informes de Lighthouse sobre las solicitudes de extracción
Puntuaciones de informes de Lighthouse en las solicitudes de extracción Código
.

Si ves que tu solicitud de extracción está bloqueada por una puntuación baja de Lighthouse, ejecuta una auditoría con la CLI de Lighthouse o en las Herramientas para desarrolladores. Genera un informe con detalles sobre los cuellos de botella y sugerencias para optimizaciones simples.

Resumen

Herramienta CLI CI Resumen
Faro ✔️
  • Presupuestos para diferentes tipos de recursos en función de su tamaño o cantidad.
webpack ✔️
  • Presupuestos basados en el tamaño de los recursos que genera webpack.
  • Verifica los tamaños sin comprimir.
tamañodel paquete ✔️ ✔️
  • Los presupuestos se basan en los tamaños de recursos específicos.
  • Verifica los tamaños comprimidos o sin comprimir.
bot de Lighthouse ✔️
  • Presupuestos basados en las puntuaciones de Lighthouse.