Sin duda, algo que hacemos siempre al crear un proyecto de JavaScript, Node.js, Bun, etc. es manejar variables de entorno. Para ello, creamos un archivo .env
y lo leemos con process.env
. Sin embargo, esto puede ser un poco tedioso, validar que existan todas las variables, que tengan un valor por defecto, etc.
Requerimientos
- Lo primero es tener un proyecto de JavaScript, Node.js, Bun, etc.
- Instalar la libreria zod
Pasos
- Instalar la libreria zod
npm install zod # npmyarn add zod # yarnbun add zod # bunpnpm add zod # pnpm
- Crear un archivo
.env
con las variables de entorno
PORT=3000DB_HOST=
- Crear un archivo
env.ts
oenv.js
con el siguiente contenido
const z = require("zod");
const envSchema = z.object({ PORT: z.string().default("3000"), DB_HOST: z.string().default("localhost"),});
const env = envSchema.parse(process.env);
module.exports = env;
import { z } from "zod";
const envSchema = z.object({ PORT: z.string().default("3000"), DB_HOST: z.string().default("localhost"),});
// Si ocupas Bun puedes cambiar el process.env por Bun.envexport const env = envSchema.parse(process.env);
Gracias a zod, podemos validar que las variables de entorno existan y tengan un valor por defecto. Si no existen, se usará el valor por defecto.
También podemos decir que sean opcionales con z.string().optional()
.
o que tengan un mínimo de caracteres con z.string().min(3)
.
- Usar las variables de entorno
const env = require("./env.js");
console.log(env.PORT); // "3000"console.log(env.DB_HOST); // "localhost"
import { env } from "./env";
console.log(env.PORT); // "3000"console.log(env.DB_HOST); // "localhost"
De esta manera, podemos manejar las variables de entorno de manera fácil y segura.