Home blog works

Maneja variables de entorno en Javascript o Typescript

code - Javascript - typescript - Nodejs - env

.env

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

Pasos

  1. Instalar la libreria zod
bash
npm install zod # npm
yarn add zod # yarn
bun add zod # bun
pnpm add zod # pnpm
  1. Crear un archivo .env con las variables de entorno
.env
PORT=3000
DB_HOST=
  1. Crear un archivo env.ts o env.js con el siguiente contenido
env.js
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;

env.ts
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.env
export 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).

  1. Usar las variables de entorno
index.js
const env = require("./env.js");
console.log(env.PORT); // "3000"
console.log(env.DB_HOST); // "localhost"

index.ts
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.