npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dotenv-custom

v1.0.8

Published

`dotenv-custom` es una herramienta diseñada para simplificar la gestión de variables de entorno en tus aplicaciones Node.js. Esta herramienta permite definir y procesar las variables de entorno directamente desde los archivos `.env`, con soporte para vali

Downloads

42

Readme

dotenv-custom

dotenv-custom es una herramienta diseñada para simplificar la gestión de variables de entorno en tus aplicaciones Node.js. Esta herramienta permite definir y procesar las variables de entorno directamente desde los archivos .env, con soporte para validación, valores por defecto, tipos de datos específicos y generación automática de un archivo example.env.

Descripción

dotenv-custom carga las variables de entorno desde archivos .env, permitiendo parsearlas automáticamente al tipo de dato adecuado y proporcionando una forma más eficiente y segura de manejarlas. Además, soporta tags especiales en el archivo .env que definen reglas como:

  • Valores por defecto: Asignar un valor por defecto si la variable no se encuentra o está vacía.
  • Requerimientos: Obligar a que una variable de entorno esté definida.
  • Tipos de datos: Definir explícitamente el tipo de la variable de entorno (string, number, boolean, json).

Instalación

Para instalar dotenv-custom, ejecuta el siguiente comando en tu proyecto:

npm install dotenv-custom

Uso con CommonJS

const customEnv = require("dotenv-custom");

Uso con ES6

import customEnv from "dotenv-custom";

Configuración

Por defecto, dotenv-custom busca un archivo .env en el directorio de trabajo (process.cwd()) y carga las variables de entorno desde allí. Sin embargo, puedes especificar un archivo .env o múltiples archivos .env pasando un objeto de configuración con la propiedad path.

Configuración por defecto

Si no se pasa ninguna configuración, el archivo .env debe estar en el directorio de trabajo (process.cwd()):

customEnv();

Configuración personalizada

Puedes pasar un objeto de configuración con el atributo path que puede ser una cadena con la ruta del archivo .env o un array de rutas si deseas cargar múltiples archivos.

customEnv({
  path: "./config/.env", // ruta personalizada
});

Si deseas cargar múltiples archivos .env, puedes hacerlo de la siguiente manera:

customEnv({
  path: ["./config/.env", "./config/another.env"], // rutas múltiples
});

Nota: Es recomendable usar rutas absolutas para evitar problemas relacionados con el directorio de trabajo.

Uso de Tags en el archivo .env

En los archivos .env, puedes usar los siguientes tags para modificar el comportamiento de las variables de entorno.

  1. <default=value>

Este tag asigna un valor por defecto a una variable de entorno en caso de que no se le haya asignado un valor.

# Ejemplo
MYSQL_PORT=<default=3306>3307

Si la variable MYSQL_PORT no está definida en el archivo .env, se utilizará el valor 3307.

  1. <required>

Este tag marca una variable de entorno como obligatoria. Si la variable no está definida en el archivo .env, el programa lanzará un error antes de ejecutarse.

# Ejemplo
JWT_TOKEN=<required>token-secreto
  1. <type=typeof>

Este tag permite especificar el tipo de dato que debe tener la variable de entorno. Los tipos permitidos son: boolean, string, number, json.

# Ejemplo
SERVICE_1_STATE=<default=true>
SERVICE_2_STATE=<default=true><type=string>false
  • SERVICE_1_STATE se parseará como un boolean.
  • SERVICE_2_STATE se parseará como un string debido al tag <type=string>.

Ejemplo de Implementación

A continuación se muestra un ejemplo de implementación:

Estructura del proyecto

mi-proyecto/
│
├── .env
├── main.ts
└── node_modules/

Archivo .env

# JWT Secret
JWT_TOKEN=<required>token-secreto

# MYSQL ENVs
MYSQL_ROOT_PASSWORD=<default=mysql-pass>secret-password
MYSQL_DATABASE=<default=test_db>
MYSQL__PORT=<default=3306>3307

# TYPE TAGS TEST
SERVICE_1_STATE=<default=true>
SERVICE_2_STATE=<default=true><type=string>false

Archivo main.ts

import customEnv from "dotenv-custom";

console.log(customEnv());

Terminal, resultado de console.log:

{
  JWT_TOKEN: 'token-secreto',
  MYSQL_DATABASE: 'test_db',
  MYSQL_ROOT_PASSWORD: 'secret-password',
  MYSQL__PORT: 3307,
  SERVICE_1_STATE: true,
  SERVICE_2_STATE: 'false'
}

Generación Automática del Archivo example.env

Al ejecutar customEnv(), la herramienta genera automáticamente un archivo example.env en el mismo directorio que el archivo .env con los tags establecidos. Este archivo servirá como ejemplo para otros desarrolladores o para documentar las variables de entorno necesarias.

Ejemplo de example.env

# JWT Secret
JWT_TOKEN=<required>

# MYSQL ENVs
MYSQL_ROOT_PASSWORD=<default=mysql-pass>
MYSQL_DATABASE=<default=test_db>
MYSQL__PORT=<default=3306>

# TYPE TAGS TEST
SERVICE_1_STATE=<default=true>
SERVICE_2_STATE=<default=true><type=string>

Este archivo no contiene valores reales, pero mantiene la estructura de los tags para que sea fácil de usar como ejemplo.

Configuración personalizada para example.env

Si deseas especificar una ruta personalizada para el archivo example.env, puedes usar la opción exampleEnvPath dentro de la configuración:

customEnv({
  path: "./config/.env",
  exampleEnvPath: "./config/example.env", // ruta personalizada para el archivo example.env
});

Consideraciones Importantes

  • Rutas relativas y absolutas: Al trabajar con rutas relativas, se usan como base process.cwd(). Es recomendable usar rutas absolutas para evitar problemas cuando se ejecutan múltiples servicios en un entorno de microservicios.
  • Manejo de valores predeterminados: Los valores por defecto solo se aplican si no se ha definido un valor explícito para la variable en el archivo .env. Si la variable está vacía, el valor por defecto no se aplica.
  • Generación de example.env: El archivo example.env se genera automáticamente en el mismo directorio que el archivo .env. Si se cargan múltiples archivos .env, se generará un archivo example.env para cada uno de ellos.

Conclusión

dotenv-custom proporciona una forma sencilla y robusta de manejar las variables de entorno en tus proyectos Node.js. Con soporte para validación, tipos específicos y generación automática de archivos de ejemplo, puedes gestionar tus configuraciones de manera eficiente y segura. ¡Prueba dotenv-custom y optimiza la gestión de tus variables de entorno!