No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Vite.js

Curso de Vite.js

Diana Martínez

Diana Martínez

Variables de entorno y modos

14/19
Recursos

Hay dos conceptos que necesitamos entender que pueden llegar a ser bastante útiles: 1. Variables de entorno, son variables externas a nuestro proyecto y no son más que un nombre asignado a un valor. 2. Modos, que como lo hemos visto en clases anteriores, existen dos, el modo de desarrollo (dev) y el modo de producción (build).

Modos

Continuemos editando nuestro archivo vite.config.js, pero primero debemos entender que en nuestra función estamos recibiendo algunos argumentos, entre los que destacan command y mode, command es el comando que utilizamos para ejecutar este archivo y mode nos dice si estamos en modo producción o modo desarrollo.

``` import { defineConfig } from "vite";

export default defineConfig(({ command, mode }) => { const port = 8080;

console.log(comando: ${command} y modo: ${mode});

return { server: { port }, }; }); ```

Si ejecutamos con dev (npm run dev) veremos que está usando el comando serve y el modo de desarrollo: comando: serve y modo: development

Pero si ejecutamos con build (npm run build) el comando seria build y el modo seria producción: comando: build y modo: production

Esto puede llegar a ser útil porque podemos implementar una lógica dependiendo del modo en que estemos, en el siguiente ejemplo muy básico se imprimirá un mensaje dependiendo del modo.

``` import { defineConfig, loadEnv } from "vite";

export default defineConfig(({ command, mode }) => { const port = 8080;

console.log(comando: ${command} y modo: ${mode});

if (command === "development") { console.log("Modo desarrollo"); } else { console.log("Modo produccion"); }

return { server: { port }, }; }); ```

Variables de entorno

Para acceder a nuestras variables de entorno debemos de primero crear en la raíz del proyecto un archivo con el nombre .env y dentro de este podremos crear las variables de entorno que necesitemos.

Estructura de una variable de entorno

La estructura de las variables de entorno es la siguiente: VITE_NOMBRE_DE_VARIABLE=valor, como podrás ver es necesario que empiece con la palabra VITE, para que después pueda ser reconocida.

VITE_NAME="vite demo"

Usando variables de entorno

En el anterior ejemplo cree una variable de entorno con el nombre de VITE_NAME, que guardara el nombre de nuestro proyecto. Ahora, para utilizarla dentro de vite.config.js debemos de emplear loadEnv, una función que se importa desde vite y nos entrega todas las variables en el archivo .env.

Tener en cuenta que solo entregara las variables que empiezen con VITE

Acerca de loadEnv

loadEnv recibe dos parámetros, que son: 1. El modo en el que estamos (modo desarrollo o modo producción). Esto debido a que nuestro archivo .env también puede tener el nombre de .env.development o .env.production, si estamos en modo producción se traerán las variables que estén en .env.development, si estamos en modo producción se traerán las variables de .env.production y si no existen ninguno de estos archivos se traerá por defecto las de .env. 2. Ubicación por la cual se accede vía Nodejs para leer el archivo. Para acceder a la ubicación podemos usar process.cwd(), una función de Nodejs que nos entrega la dirección del proyecto.

Ejemplo

A continuación vamos a importar loadEnv, crear una variable con el nombre de env y dentro de esta utilizar la función loadEnv, entregándole los parámetros necesarios.

```import { defineConfig, loadEnv } from "vite";

export default defineConfig(({ command, mode }) => { const port = 8080; const env = loadEnv(mode, process.cwd());

console.log(comando: ${command} y modo: ${mode}); console.log("Variables de entorno:", env);

if (command === "development") { console.log("Modo desarrollo"); } else { console.log("Modo produccion"); }

return { server: { port }, }; }); ```

Por último imprimiremos la variable env y veremos que nos entrega en un formato JSON las variables del archivo .env

Variables de entorno: { VITE_NAME: 'vite demo' }

Recapitulación

Ahora eres capaz de acceder a las variables de entorno, algo muy útil para tu vida profesional, además también puedes saber en qué modo estas y que comando estás utilizando. Te recuerdo que puedes revisar este apartado de la documentación de Vite por si quieres profundizar en el tema.

Contribución creada por: Jofay Zhan Segura

Aportes 9

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

También podemos importar variables de Entorno con el siguiente comando:

import.meta.env.<VariableName>
 

Vite usa dotenv para cargar variables de entorno adicionales desde los siguientes archivos en su directorio de entorno :

.env                # loaded in all cases
.env.local          # loaded in all cases, ignored by git
.env.[mode]         # only loaded in specified mode
.env.[mode].local   # only loaded in specified mode, ignored by git

Adicional esta es la documentación de VITE sobre las ENV Variables de entorno VITE

🧩 Más acerca de las variables de entorno

Ideas/conceptos claves

Una variable de entorno es una variable dinámica que puede afectar al comportamiento de los procesos en ejecución en un ordenador. Son parte del entorno en el que se ejecuta un proceso

Apuntes

  • Generalmente, son secretos que solo una máquina en particular debe saber. Ej.: la contraseña de la base de datos

    • Permite almacenar una “contraseña” donde únicamente nos interesa
  • No deben versionarse

    • Peor aún si el repositorio es público, ya que existe montones de bots automatizados para encontrar estas llaves

    <aside>
    💡 En caso de subir por accidente una variable de entorno, no sirve de nada crear otro commit, porque quedará en la historia del repositorio, la mejor solución es crear otra llave de entorno

    </aside>

¿Qué buscamos?

  1. Los secretos no sean compartidos, pero…
  2. Como desarrollador quiero conocer que secretos necesito para que la aplicación funcione.
    • Debe ser una lista clara la cual especifique que llaves necesito para que la aplicación no tenga ningún problema
  3. La aplicación debe ser capaz de cargar y leer nuestros secretos

Implementación

  • Existen diferentes formas de implementar las variables de entorno, una de ellas es la siguiente estructura, donde existe:

Documento de ejemplo

  • Versionado
  • Contiene una lista de llaves necesarias
  • Sin los valores de las llaves ⇒ En el peor de los casos puede existir algún valor, pero es porque nada malo pueda pasar
ACCESS_TOKEN=
URL_DB=

Una copia del documento

  • Ignorado por el versionador (Git).
  • Contiene las llaves necesarias con valores necesarios.
ACCESS_TOKEN=<valor>
URL_DB=<valor>
📌 **RESUMEN:** Las variables de entorno, son la mejor forma de poder guardar contraseñas, llaves, etc. (secretos) ya que estas no son compartidas, establece una lista clara de que secretos necesita la aplicación para que no se rompa y es capaz de cargar y leer dichos valores de la lista de secretos

Para cambiar el prefijo VITE_ a las variables de entorno, pueden cambiar su configuración en el archivo de configuración de vite, modificando la opción envPrefix

// vite.config.js

{
	envPrefix: "PLATZI_"
}

NOTAS DE SEGURIDAD

envPrefix no debe configurarse como ‘’, esto expondrá todas tus variables env y provocará una filtración inesperada de información confidencial. De todas formas, Vite arrojará un error al detectar ‘’.

También tengan en cuenta que para que esto tenga sentido el archivo .env no debe subirse nunca al repositorio en la nube, es decir estar en el .gitignore

El curso mejor explicado de todo plazi. Ojala toros los profesores tuvieran el mismo nivel. Enhorabuena!!

Un ejemplo de archivo de configuración con mis comentarios sobre la clase

.env
VITE_PORT=8000
-----

import { defineConfig, loadEnv } from 'vite'

export default defineConfig(({command, mode}) => {
	// command es el comando con el que se esta ejecutando en npm run "build"
  // mode es el modo que esta ejecutando ["development", "production"]
  // Estas variables están relacioandas con los scripts de package.json que vimos ["dev", "build"]

	const env = loadEnv(mode, process.cwd())

	if(mode === 'development') // Ejecuto algo
  else // ejecuto otra cosa

  return {
    server: {
      port: env.VITE_PORT
    }
  }
})

Estoy viendo que el file “.env” todo lo que se escriba debe ir sin espacio, es cierto, no?

te pasaste diana cual es tu Twitter para seguirte!!!

Carga de variables de entorno en un contexto de acceso a las configuraciones de vite para modo produccion y modo desarrollo