Cómo utilizar archivos de entorno con env-cmd

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1 – Configuración del proyecto
  • Paso 2 – Usoenv-cmd
  • Paso 3 – Uso de diferentes formatos de archivos
    1. Archivo JSON
    2. JavaScript
    3. Archivo RC
  • Paso 4 – Uso de alternativas elegantes con--fallback
  • Paso 5 – Uso de valores de entorno existentes con--no-override
  • Conclusión
  • Las variables de entorno le permiten cambiar entre su desarrollo local, pruebas, preparación, pruebas de aceptación del usuario (UAT), producción y cualquier otro entorno que sea parte del flujo de trabajo de su proyecto.

    En lugar de pasar variables a sus scripts individualmente, env-cmdle permite agrupar variables en un archivo de entorno ( .env) y pasarlas a su script.

    En este artículo lo instalarás y lo usarás env-cmden un proyecto de ejemplo.

    Prerrequisitos

    Para completar este tutorial, necesitarás:

    • Node.js instalado localmente, lo cual puedes hacer siguiendo Cómo instalar Node.js y crear un entorno de desarrollo local .
    • Hay una sección opcional sobre cómo agregar archivos a .gitignore. Es posible que deba instalarla y configurarlagit si desea continuar.
    • También será beneficioso estar familiarizado con la ventana de terminal y un editor de código.

    Nota: Este tutorial se ha actualizado para utilizar los comandos env-cmdposteriores a la versión 9.0.0.

    Este tutorial fue verificado con Node v15.14.0, npmv7.10.0 y env-cmdv10.0.1.

    Paso 1 – Configuración del proyecto

    En este tutorial se supone que tienes un nuevo proyecto. Crea un nuevo directorio:

    1. mkdir env-cmd-example

    Luego navega hasta el directorio:

    1. cd env-cmd-example

    En general, se considera una mala práctica enviar los archivos de entorno al sistema de control de versiones. Si el repositorio se bifurca o se comparte, las credenciales estarán disponibles para otros, ya que se registrarán para siempre en el historial del proyecto.

    Se recomienda agregar el archivo a su .gitignore.

    Nota: Esto no será necesario para el alcance de este tutorial, pero se presenta aquí con fines educativos.

    Inicializar un nuevo gitproyecto:

    1. git init

    Crea un .gitignorearchivo y agrega los patrones para excluir tu archivo de entorno:

    .gitignore

    .env.env.js.env.json.env-cmdrc

    Para este tutorial, puedes excluir .env, .env.js, .env.json, .env-cmdrc.

    Luego, crea un .envarchivo para el proyecto.

    Abra el archivo en su editor de código y agregue la siguiente línea de código:

    .env

    creature=sharkgreen=#008f68yellow=#fae042

    Esto define creaturea shark, greena #008f68, yellowa #fae042.

    Luego, crea un nuevo log.jsarchivo:

    registro.js

    console.log('NODE_ENV:', process.env.NODE_ENV);console.log('Creature:', process.env.creature);console.log('Green:', process.env.green);console.log('Yellow:', process.env.yellow);

    Esto registrará las variables definidas previamente en la consola y también imprimirá el NODE_ENVvalor.

    Ahora, su ejemplo está preparado para usar archivos de entorno con env-cmd.

    Paso 2 – Usoenv-cmd

    Moderno npmy yarnpuede ejecutarse env-cmdsin necesidad de dependencia.

    Utilice npx :

    1. npx env-cmd node log.js

    O yarn run:

    1. yarn run env-cmd node log.js

    De lo contrario, puede instalar el paquete como una dependencia o devDependency:

    1. npm install env-cmd@10.0.1

    El env-cmdpaquete instala un script ejecutable llamado env-cmdque puede llamarse antes que sus scripts para cargar fácilmente variables de entorno desde un archivo externo.

    Dependiendo de su configuración, puede hacer referencia env-cmdde diferentes maneras.

    Quizás la forma más compatible entre administradores de paquetes es agregar un script personalizado a su package.jsonarchivo:

    paquete.json

    {  "scripts": {    "print-log": "env-cmd node log.js"  }}

    Por ejemplo, con npm, podrá ejecutar este script personalizado con el siguiente comando:

    1. npm run print-log

    Si prefieres usarlo env-cmddirectamente desde la línea de comandos, puedes llamarlo directamente desde node_modules:

    1. ./node_modules/.bin/env-cmd node log.js

    De ahora en adelante, este tutorial utilizará este npxenfoque, pero todos los enfoques están diseñados para funcionar de manera similar.

    Ahora, utiliza uno de los enfoques en tu terminal.

    Independientemente de cómo elija ejecutar el script, env-cmdse cargará el .envarchivo y el script de registro informará las variables.

    OutputNODE_ENV: undefinedCreature: sharkGreen: #008f68Yellow: #fae042

    Es posible que hayas notado que el NODE_ENVvalor es undefined. Esto se debe a que NODE_ENVno estaba definido en el .envarchivo.

    Es posible pasar NODE_ENVantes de llamar env-cmd.

    Por ejemplo, aquí está el comando para npx:

    1. NODE_ENV=development npx env-cmd node log.js

    Ejecute el comando nuevamente con lo NODE_ENVdefinido:

    OutputNODE_ENV: developmentCreature: sharkGreen: #008f68Yellow: #fae042

    En este punto ya has aprendido a utilizar env-cmdun .envarchivo.

    Paso 3 – Uso de diferentes formatos de archivos

    env-cmdDe forma predeterminada, se espera un .envarchivo en el directorio raíz del proyecto. Sin embargo, puede cambiar el tipo de archivo y la ruta con la opción --file( ).-f

    Independientemente de cómo lo haga referencia, tiene una amplia variedad de formatos de archivos disponibles para almacenar sus variables de entorno.

    Archivo JSON

    A continuación se muestra un ejemplo de un .env.jsonarchivo:

    .env.json

    {  "creature": "shark",  "green": "#008f68",  "yellow": "#fae042"}

    Y aquí hay un ejemplo del uso de este archivo con env-cmd:

    1. NODE_ENV=development npx env-cmd --file .env.json node log.js

    Ahora ha aprendido a utilizar un archivo de entorno JSON.

    JavaScript

    A continuación se muestra un ejemplo de un .env.jsarchivo:

    .env.js

    module.exports = {  creature: 'shark',  green: '#008f68',  yellow: '#fae042'};

    Y aquí hay un ejemplo del uso de este archivo con env-cmd:

    1. NODE_ENV=development npx env-cmd --file .env.js node log.js

    Ahora ha aprendido a utilizar un archivo de entorno JavaScript.

    Archivo RC

    El rcformato de archivo es especial porque le permite definir múltiples entornos en un solo archivo JSON y hacer referencia al entorno por nombre en lugar de por archivo.

    El archivo “runcom” también es especial porque debe tener nombre .env-cmdrcy estar presente en la raíz del proyecto.

    A continuación se muestra un ejemplo de un .env-cmdrcarchivo con entornos definidos para development, staging, y production:

    .env-cmdrc

    {  "development": {    "NODE_ENV": "development",    "creature": "shark",    "green": "#008f68",    "yellow": "#fae042",    "otherVar1": 1  },  "staging": {    "NODE_ENV": "staging",    "creature": "whale",    "green": "#6db65b",    "yellow": "#efbb35",    "otherVar2": 2  },  "production": {    "NODE_ENV": "production",    "creature": "octopus",    "green": "#4aae9b",    "yellow": "#dfa612",    "otherVar3": 3  }}

    Para utilizar los .env-cmdrcvalores será necesaria una opción --environments( -e).

    Luego puedes hacer referencia a un único entorno:

    1. npx env-cmd --environments development node log.js

    Incluso puedes hacer referencia a múltiples entornos, lo que fusionará cada una de las variables del entorno y el último entorno tendrá prioridad si hay variables superpuestas:

    1. npx env-cmd --environments development,staging,production node log.js

    Al especificar nuestros tres entornos, otherVarse establecerá cada uno de los valores y el resto de las variables se obtendrán del entorno final indicado production.

    Paso 4 – Uso de alternativas elegantes con--fallback

    En situaciones donde no está presente un archivo de entorno personalizado:

    npx env-cmd -f .env.missing node log.js

    env-cmdarrojará un error:

    OutputError: Failed to find .env file at path: .env.missing

    En situaciones en las que hay un problema inesperado con la ruta del archivo env personalizado, env-cmdpuede intentar cargar un .envarchivo desde la raíz de su proyecto. Para ello, pase el --fallbackindicador:

    1. npx env-cmd --file .env.missing --fallback node log.js

    Ahora, si hay un .envarchivo válido al cual recurrir, este comando no mostrará ningún error.

    Paso 5 – Uso de valores de entorno existentes con--no-override

    Hay situaciones en las que es posible que desees conservar todas o algunas de las variables ya configuradas en el entorno.

    Para respetar las variables de entorno existentes en lugar de utilizar los valores de su .envarchivo, pase env-cmdel --no-overrideindicador:

    1. NODE_ENV=development creature=squid npx env-cmd --no-override node log.js

    Esto dará como resultado el siguiente resultado:

    OutputNODE_ENV: developmentCreature: squidGreen: #008f68Yellow: #fae042

    Tenga en cuenta que el creaturevalor se ha establecido en squidlugar sharkdel que se definió en el .envarchivo.

    Conclusión

    En este artículo lo instaló y utilizó env-cmden un proyecto de ejemplo.

    El uso de archivos de entorno puede ayudarle a cambiar entre entornos de “desarrollo” y “producción”.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion