Forzando a consumir la última versión de una aplicación Angular🧐

Publicado el 13.08.2023 a las 22:47

Forzando a consumir la última versión de una aplicación Angular🧐

  1. ¿Cómo se compila una aplicación Angular por defecto?

  2. Explorando todas las opciones del ng build

  3. ¿Cómo fuerzo a que los usuarios consuman la última versión de mi aplicación Angular desplegada?

Logo de fjmduran

Forzando a consumir la última versión de una aplicación Angular🧐

Angular dispone de herramientas nativas para forzar que los usuarios que consuman nuestras aplicaciones lo hagan utilizando la última versión desplegada 🚀


Por defecto, cuando desplegamos nuestra aplicación Angular y un usuario la consume queda almacenada en la caché de su navegador.


Esto se hace con el objetivo de que la próxima vez que el mismo usuario acceda a nuestra aplicación lo haga desde su caché y el acceso sea inmediato.


Imagina que actualizamos nuestra aplicación Angular.


Los usuarios que ya la hayan utilizado, no consumirán esta última versión hasta que su navegador actualice la caché, o bien, el usuario actualice la caché de su navegador manualmente.


La actualización del caché dependerá del navegador y la configuración de cada usuario.

¿Cómo se compila una aplicación Angular por defecto?

Antes de desplegar nuestra aplicación Angular la tendremos que compilar, y para ello utilizamos el comando ng build con el parámetro configuration=production

ng build --configuration=production

Explorando las opciones del ng build

En la documentación oficial de Angular encontrarás todas las opciones que tiene disponible el comando ng build,


Si en la documentación encuentras parámetros que no están disponibles para tu proyecto de Angular será porque tu proyecto es de una versión anterior.


Puedes ver los parámetros disponibles del comando ng build para tu proyecto de angular escribiendo en una consula dentro de tu proyecto ng build --help

Opciones disponibles del ng build

¿Cómo fuerzo a que los usuarios consuman la última versión de mi aplicación Angular desplegada?

El secreto está en una de los parámetros que nos brinda el ng build, concretamente en la opción --output-hashing


Según la documentación oficial de Angular, al parámetro --output-hashing le podremos asignar none | all | media | bundles, siendo el valor por defecto none.


    Te explico lo que hace cada uno de los valores:
  • none; no hará nada.
  • all; agrega un hash a todos los archivos generados, lo que permitirá evitar consumir la caché cuando cambian.
  • media; agrega un hash solo a los archivos multimedia, como las imágenes.
  • bundles; agrega un hash solo a los archivos JavaScript compilados.

Así que resumiendo, si quieres evitar la caché del navegador del usuario y que siempre se consuma la última versión de tu aplicación Angular compila tu proyecto con

ng build [tu_otros_parámetros] --output-hashing=all

Hasta luego 🖖