Crear y almacenar configuraciones en Node.js
Administrar archivos de configuración puede ser una tarea desalentadora en Node.js para desarrolladores novatos. Es cierto a pesar de contar con bibliotecas como convict
, husks
o config
que facilitan el desarrollo y la gestión de los archivos de configuración.
Una de las mejores prácticas que facilita el almacenamiento y la administración de archivos de configuración es crear un archivo centralizado que almacene los archivos y garantice que los archivos se puedan cambiar sin afectar el código.
Tener un archivo centralizado que luego se puede extender a otros entornos facilita la vida de otros desarrolladores que leen su código, además de promover la reutilización.
En Node.js, los archivos de configuración normalmente se almacenan en un archivo de configuración predeterminado; sin embargo, pueden ser anulados y ampliados por fuentes externas o variables ambientales.
Los archivos de configuración pueden estar en diferentes formatos de archivo; estos incluyen los comunes como el .json
, YAML
, y otros como .json5
o .hjson
.
Instalar node-config
para crear y almacenar configuraciones en Node.js
Node-config
es un paquete npm
que nos permite crear y almacenar diferentes archivos de configuración de implementación. Podemos definir parámetros predeterminados para extenderlos a entornos de desarrollo, producción o ensayo utilizando este paquete.
Podemos instalar y configurar Node-config
usando el administrador de paquetes npm
. Sin embargo, primero debemos crear un servidor express simple y luego navegar a la carpeta de la aplicación, como se muestra aquí.
Una vez que el servidor de aplicaciones esté en su lugar, podemos instalar el paquete de configuración ejecutando el siguiente comando.
$ npm install config
El comando anterior agregará el paquete de configuración como una de nuestras dependencias en el archivo package.json
, como se muestra a continuación.
{
'name': 'myapp', 'version': '1.0.0', 'description': '', 'main': 'index.js',
'scripts': {'test': 'echo "Error: no test specified" && exit 1'},
'author': 'Isaac Tony', 'license': 'MIT',
'dependencies': {'config': '^3.3.7', 'express': '^4.17.2'}
}
Ahora podemos crear un archivo que albergará todos nuestros archivos de configuración predeterminados creando primero una carpeta a la que llamaremos config y luego creando un archivo llamado default.json
, como se muestra en la estructura de la aplicación a continuación.
Como se muestra arriba, aunque cuando usamos Node-config
, tenemos la flexibilidad de elegir el tipo de archivo que almacenará nuestras configuraciones, hemos optado por mantener el formato .json
ya que es el formato predeterminado.
Ahora en el archivo default.json
, podemos agregar nuestra configuración en nuestra aplicación. Aquí hay algunas configuraciones básicas que podemos agregar al archivo default.json
.
{
'server': {'port': 3000},
'db': {'host': 'localhost', 'port': 27017, 'name': 'mongodb'}
}
Ahora, usando la función config.get
, podemos recuperar estos parámetros y configuraciones y usarlos en nuestra aplicación, como se muestra en el archivo index.js
a continuación.
const express = require('express')
const app = express()
const config = require('config');
const port = config.get('server.port');
const host = config.get('db.host');
app.get('/', (req, res) => {res.send('Hello World!')})
app.listen(
port, host,
() => {console.log(`The application is listening on ${host}:${port}`)})
Una vez que tengamos este archivo de configuración predeterminado en su lugar, podemos extender fácilmente estos ajustes de configuración a producción, pruebas, etc., creando archivos de configuración para el entorno respectivo.
También podemos realizar anulaciones específicas del entorno repitiendo las variables de configuración en el archivo de configuración predeterminado en otro archivo de configuración específico del entorno o a través de la línea de comando creando la variable NODE-CONFIG
antes de iniciar la aplicación.
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn