Uso de cross-env para Variables de Entorno en JavaScript

Clase 5 de 19Curso de Next.js: Optimización y Deploy a Producción

Resumen

Cuando trabajas con variables de entorno en proyectos de JavaScript, es fundamental entender que no todos los sistemas operativos las manejan de la misma manera. Conocer estas diferencias y las herramientas disponibles para resolverlas puede ahorrarte horas de depuración y garantizar que tu aplicación funcione sin importar dónde se ejecute.

¿Cuál es la diferencia entre Windows y Linux al setear variables de entorno?

Las variables de entorno son una tecnología que existe desde hace mucho tiempo, pero su sintaxis varía según el sistema operativo [0:10]. En Windows, se utiliza la expresión set seguida del key y el valor:

bash set MI_VARIABLE=valor

Mientras que en sistemas Unix, como Mac o Linux, se usa export [0:25]:

bash export MI_VARIABLE=valor

Esto genera un problema evidente: un comando no funciona en el otro sistema operativo. Si tu equipo de desarrollo trabaja en distintas plataformas, alguien inevitablemente encontrará errores al intentar ejecutar el proyecto.

¿Qué es Cross Env y por qué es una buena práctica?

Cross Env es una utilidad de JavaScript que resuelve este problema de compatibilidad [0:48]. Al usarla, las variables de entorno funcionan de forma uniforme tanto en Windows como en Linux o cualquier otro sistema. Esta herramienta se encarga de setear el valor automáticamente según el sistema operativo donde se ejecute la aplicación.

  • Elimina la necesidad de escribir comandos distintos por plataforma.
  • Es considerada una muy buena práctica en aplicaciones Node.js.
  • Existen soluciones equivalentes para otros lenguajes y frameworks.

Un detalle importante: Next.js ya tiene esto resuelto [1:12]. Cuando utilizas los archivos .env con sus variantes (.env.local, .env.production, .env.testing, entre otros), el framework se encarga de gestionar las variables sin que te preocupes por el sistema operativo. Sin embargo, para cualquier otro tipo de aplicación Node.js o JavaScript que no use Next.js, Cross Env sigue siendo la opción recomendada [1:28].

¿Cómo manejan las variables de entorno los servicios en la nube?

La gran mayoría de servicios de internet y servidores ya ofrecen soporte nativo para variables de entorno [1:42]. La forma de acceder a ellas en tu aplicación Node.js sigue siendo siempre la misma: process.env.NOMBRE_DE_LA_VARIABLE.

¿Cómo se configuran en GitHub Actions?

En GitHub Actions, basta con agregar la clave env dentro del archivo YML del workflow [1:52]. Los valores sensibles se configuran como secrets dentro de los settings del repositorio.

¿Cómo funcionan en Heroku y Vercel?

En Heroku, aunque no se llaman environment variables, cumplen la misma función bajo el nombre de config variables [2:04]. Dentro de la configuración del proyecto, hay un espacio dedicado para agregar cada key y su valor según el ambiente.

Por su parte, Vercel ofrece la misma funcionalidad con opciones adicionales [2:18]. Permite habilitar variables específicas para distintos entornos:

  • Production.
  • Preview.
  • Development.

El concepto central permanece idéntico en todos los servicios: definir pares de clave-valor que tu aplicación consume en tiempo de ejecución a través de process.env.

Si has tenido problemas de compatibilidad entre sistemas operativos en tus proyectos, comparte tu experiencia y cómo lo resolviste.