La gestión de ambientes en Angular es un elemento crucial para el desarrollo de aplicaciones robustas y escalables. Configurar correctamente los entornos de desarrollo y producción permite mantener separadas las configuraciones específicas para cada fase del ciclo de vida de tu aplicación, evitando problemas potenciales y facilitando el mantenimiento. Esta práctica no solo es relevante en Angular, sino que constituye un estándar en el desarrollo de software moderno.
¿Qué son los ambientes en Angular y por qué son importantes?
Los ambientes en Angular son configuraciones específicas que permiten a los desarrolladores definir variables y ajustes que cambiarán según el entorno donde se ejecute la aplicación. Por defecto, Angular maneja dos ambientes principales: desarrollo y producción.
La importancia de estos ambientes radica en varios aspectos:
Permiten conectarse a diferentes APIs según el entorno (desarrollo local vs servidor de producción)
Evitan modificaciones accidentales en datos de producción durante la fase de desarrollo
Facilitan la configuración de características específicas para cada entorno
Mejoran la seguridad al separar claves y tokens sensibles
Angular no tiene estos ambientes configurados por defecto, por lo que debemos habilitarlos explícitamente para aprovechar sus beneficios.
¿Cómo habilitar los ambientes en Angular?
Para habilitar los ambientes en Angular, debemos ejecutar el siguiente comando:
ng generate environment
Este comando creará automáticamente una carpeta environments con dos archivos:
environment.ts: Configuración para el ambiente de producción
environment.development.ts: Configuración para el ambiente de desarrollo
Estos archivos inicialmente contienen un objeto JavaScript vacío, que podemos personalizar según nuestras necesidades. La estructura básica recomendada incluye al menos una propiedad que indique si estamos en producción:
Es importante no incluir rutas específicas en estas URLs, solo el dominio base. Las rutas específicas se agregarán en los servicios que consuman la API.
Implementación en los servicios
Para utilizar estas configuraciones en nuestros servicios, debemos importar el archivo de environment:
¿Cómo funcionan los ambientes en tiempo de ejecución?
El comportamiento de los ambientes en Angular es automático y depende del comando que utilicemos para ejecutar o construir nuestra aplicación:
Durante el desarrollo (ng serve), Angular utilizará automáticamente la configuración de environment.development.ts.
Al construir para producción (ng build), Angular utilizará la configuración de environment.ts.
Este cambio es transparente para el desarrollador y no requiere configuración adicional, siempre que hayamos importado correctamente el archivo de environment en nuestros servicios.
Para verificar que estamos utilizando el ambiente correcto, podemos revisar las peticiones de red en las herramientas de desarrollo del navegador y confirmar que se están realizando a la URL configurada en el ambiente correspondiente.
Los ambientes en Angular son una herramienta poderosa que nos permite mantener configuraciones separadas para diferentes etapas del desarrollo. Implementarlos correctamente mejora la seguridad, facilita el mantenimiento y evita errores accidentales en producción. ¿Has implementado ambientes en tus proyectos de Angular? ¿Qué otras configuraciones específicas sueles incluir en cada ambiente? Comparte tu experiencia en los comentarios.
💡 Tip adicional sobre gestión de ambientes en Angular
Una buena práctica es usar más de dos ambientes (staging, qa, testing), además de development y production. Esto se puede hacer agregando más configuraciones en angular.json:
ng build --configuration=staging
También, si necesitas cambiar configuraciones sin recompilar, puedes cargar un JSON externo (assets/config.json) y leerlo en main.ts. Esto es útil en despliegues dinámicos como Docker o Kubernetes.
¿Alguien ha probado esto en sus proyectos? 🚀💬
de casualidad alguien sabe como puedo descargar la api, y ponerla a funcionar?
En las primeras clases está el enlace de descarga del proyecto base. Y con ng serve puedes levantar el servicio
EXCELENTE!!!
Gran clase que permite aclarar las dudas permanentes del manejo de ambientes en Angular
Si quieres agregar o modificar los nobres del envieronment en angular.json:
build - configurations - production
Esta mal en el resumen. Dice que la orden es **ng generate environment** **Error: A collection and schematic is required during execution.**. La orden se ve en el video debe incluir la s al final **ng generate environments**. No se si se pueden generar mas entornos usando lo del texto mas un nombre del nuevo entorno.
Me paso lo mismo, gracias buen hombre!
El ambiente "staging" es un intermedio entre desarrollo y producción. este tiene que simular el entorno de producción lo más cercano posible para realizar pruebas finales antes de desplegar los cambios a produccion o al publico.
Nos ayuda a hacer pruebas reales finales y prevenir errores en produccion.
Te-ma-so, esto es oro para el trabajo real
buenas noches, su ayuda porfavor, al reemplazar en los archivos de servicio la url de la api por el llamado ${environment.apiUrl} los productos me dejaron de aparecer y se desaparecieron varias opciones, como puedo solucionarlo?
Recuerda que si trabajas en un ambiente de desarrollo con un localhost, el va a buscar los despliegues que tu tengas en tu equipo o red, en este caso Nico debe tener levantado una api local con los productos, por ende a el le aparecen, por el momento para que no tengas ese inconveniente, deja en los dos environments la api de platzi para que sigas probando.
También ten en cuenta de no poner un slash al final de la url en el enviroment, porque sino en la url queda como "https://api.escuelajs.co//api/..." y con ese doble // no la encuentra
Si se tiene un sitio que se debe instalar en los servidores del cliente, como se altera el apiURL para la url del cliente y que quede dinámico?