Dotenv-linter v3.0.0

¿Cuáles son los cambios más importantes en la versión 3.0.0 de dotenv-linter?

Hemos desarrollado dotenv-linter: una útil herramienta para validar archivos .env. Permite encontrar problemas en archivos .env que pueden pasarse por alto a primera vista y podrían causar que las aplicaciones funcionaran de forma incorrecta. La herramienta es universal y puede conectarse a cualquier proyecto, independientemente del lenguaje de programación que se haya usado. Dotenv-linter se ha desarrollado como un proyecto de código abierto por Mikhail Grachev, ingeniero de software de Evrone.

 

¿Qué es un archivo.env?

Un archivo .env o dotenves un archivo de texto simple que contiene todas las variables de entorno de un proyecto. Guardar la configuración en las variables de entorno es uno de los principios del manifiesto de aplicaciones Twelve-Factor. El archivo .env tiene un sencillo formato de clave-valor, por ejemplo: FOO=BAR

Ya escribimos sobre la versión 2.2.0 de dotenv-linter. Han pasado dos meses y medio desde entonces, y ya estamos preparados para presentarle la nueva versión de dotenv-linter la versión 3.0.0. ¡Aquí encontrará un resumen de los cambios más importantes en esta versión!

Mejoras de la API 👍

En la versión anterior, dotenv-linter tenía varias marcas, que eran básicamente los comandos --fix and --show-checks:

FLAGS:
    -f, --fix            Automatically fixes warnings
    -h, --help           Prints help information
        --no-backup      Prevents .env files from being backed up when modified by -f/--fix
    -q, --quiet          Doesn't display additional information
    -r, --recursive      Recursively search and check .env files
        --show-checks    Shows list of available checks
    -v, --version        Prints version information

Esto ha causado cierta confusión. Las marcas entraban en conflicto y no funcionaban bien entre sí:

$ dotenv-linter --fix --show-checks

En la nueva versión, hemos corregido este problema y hemos convertido las marcas --fix y --show-checks en los comandos fix y list:

FLAGS:
    -h, --help         Prints help information
    -q, --quiet        Doesn't display additional information
    -r, --recursive    Recursively searches and checks .env files
    -v, --version      Prints version information


SUBCOMMANDS:
    fix        Automatically fixes warnings [aliases: f]
    list       Shows list of available checks [aliases: l]

Comparación de archivos .env 🤲

Además, en la nueva versión hemos añadido el comando compareque permite comparar claves en archivos .env:

$ dotenv-linter compare .env .env.example
Comparing .env
Comparing .env.example
.env is missing keys: BAR
.env.example is missing keys: FOO

Mostrar archivos analizados 👀

Al analizar varios archivos .env no era fácil determinar cuáles se comprobaban con dotenv-linter y cuáles no. Esto podría ocurrir al usar nombres de archivo no estándar, o bien si no se detectaban problemas en estos archivos. En la nueva versión, se muestran los archivos analizados:

$ dotenv-linter
Checking .env
.env:1 LeadingCharacter: Invalid leading character detected

Checking .env.example
Checking .env.test

Found 1 problem

Para deshabilitar esta opción, use la marca --quiet/-q:

$ dotenv-linter --quiet
.env:1 LeadingCharacter: Invalid leading character detected

Resultados de colores 🌈

Para mejorar la usabilidad, hemos añadido advertencias de colores:

coloured output

Puede deshabilitar los resultados de colores mediante la marca --no-color.

Compatibilidad con valores multilínea 💪

Los valores multilínea se pueden guardar en archivos .env. Una de las opciones es similar a esta:

# .env
MULTILINE="new\nline"

Pero, al comprobar dichos valores, dotenv-linter solía mostrar una advertencia:

$ dotenv-linter
.env:1 QuoteCharacter: The value has quote characters (', ")

Found 1 problem

Hemos corregido esto y ahora dotenv-linterya no muestra advertencias para los valores multilínea delimitados mediante comillas.

Compatibilidad con el prefijo export 🔥

Algunas bibliotecas para trabajar con archivos .env (como dotenv, godotenv y python-dotenv) admiten el prefijo export:

# .env
export S3_BUCKET=YOURS3BUCKET
export SECRET_KEY=YOURSECRETKEYGOESHERE

El prefijo export permitía exportar las variables de entorno desde un archivo con el comando source:

$ source .env

Al comprobar dichos archivos, dotenv-lintersiempre mostraba advertencias:

$ dotenv-linter
.env:1 IncorrectDelimiter: The export S3_BUCKET key has incorrect delimiter
.env:1 LowercaseKey: The export S3_BUCKET key should be in uppercase
.env:2 IncorrectDelimiter: The export SECRET_KEY key has incorrect delimiter
.env:2 LowercaseKey: The export SECRET_KEY key should be in uppercase

Found 4 problems

En la nueva versión, hemos añadido compatibilidad con el prefijo export y ahora dotenv-linter ya no muestra ninguna advertencia.

Compatibilidad con espacios 🙌

Otra de las mejoras es la compatibilidad con el uso de espacios en los valores, que se delimitan con comillas:

# .env
WHITESPACES="a b c"

Ahora, dotenv-linterya no mostrará advertencia para dichos valores.

Validación mejorada 👌

Además, hemos corregido un problema por el que dotenv-linter no mostraba todas las advertencias a la vez:

$ dotenv-linter fix .env
Fixing .env
Original file was backed up to: ".env_1606422805"

.env:1 KeyWithoutValue: The test key should be with a value or have an equal sign

All warnings are fixed. Total: 1

$ dotenv-linter .env
Checking .env
.env:1 LowercaseKey: The test key should be in uppercase

Found 1 problem

Mejoras de rendimiento 🚀

Por último, aunque ya era bastante rápido, también hemos mejorado el rendimiento de dotenv-linter. El tiempo máximo de inicio se ha reducido de 9,3 ms a 4,3 ms (más del 50 %).

Para comprobarlo, hemos creado una referencia con la utilidad hyperfine:

Command	                                Mean [ms]	Min [ms]    Max [ms]	Relative
dotenv-linter/dotenv-linter .env	2.7 ± 0.4	2.0	    4.3	        1.00
wemake-services/dotenv-linter .env	162.6 ± 12.1	153.0	    201.3	60.83 ± 10.20

Estos son los cambios más importantes de la nueva versión 3.0.0. ¡Gracias a todos los colaboradores! Para apoyar el proyecto, añádalo como favorito o patrocínelo en GitHub.

Puede convertirse en patrocinador en GitHub Sponsors o en OpenCollective ❤️

Al trabajar con archivos .env, pueden pasarse por alto algunos problemas a primera vista o al revisar el código, lo que podría causar problemas de funcionamiento de la aplicación. Aquí es donde resulta útil dotenv-linter, ya que se puede usar en cualquier proyecto, independientemente del lenguaje de programación.
Mikhail Grachev
Ingeniero de software de Evrone
Contacto
¿Tiene algún proyecto en mente?
Vamos a hacerlo realidad
Adjuntar archivo
Los archivos deben ser menores que 8 MB.
Tipos de archivo permitidos: jpg jpeg png txt rtf pdf doc docx ppt pptx.
Este sitio está protegido por reCAPTCHA y se aplican las Condiciones del servicio y la Política de privacidad de Google.