Что нового в dotenv-linter v3.0.0?
.env
файлов на ошибки, созданный разработчиком Evrone Михаилом Грачёвым. Мы уже писали про изменения в версии v2.2.0. Прошло 2 с половиной месяца с момента прошлого релиза, и мы готовы вам представить новую версию
— v3.0.0!
Что такое .env
файлы?
.env
или dotenv
файлы — это простые текстовые файлы, содержащие в себе переменные окружения проекта. Файлы имеют формат «ключ-значение», например: FOO=BAR
Хранение конфигурации в переменных окружения предусмотрено одним из принципов манифеста «12-факторного приложения».
Вот обзор ключевых изменений, которые попали в этот релиз
.
Улучшение API ????
В предыдущей версии, у
было несколько флагов, которые по сути являлись отдельными командами — --fix
и --
:
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
Это приводило к небольшой путанице,
$ dotenv-linter --fix --show-checks
В новой версии мы исправили это и вынесли флаги --fix
и --
в отдельные команды fix
и 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]
Сравнение .env файлов ????
Также, в новой версии мы добавили новую команду compare
, которая позволяет сравнивать ключи в .env
файлах:
$ dotenv-linter compare .env .env.example
Comparing .env
Comparing .env.example
.env is missing keys: BAR
.env.example is missing keys: FOO
Отображение проверяемых файлов ????
При наличии нескольких .env
файлов, не всегда было понятно, какие из них проверил
, а какие нет.
Это могло быть связано с нестандартным именем файла, либо с отсутствием
Поэтому в новой версии мы добавили отображение проверяемых файлов:
$ dotenv-linter
Checking .env
.env:1 LeadingCharacter: Invalid leading character detected
Checking .env.example
Checking .env.test
Found 1 problem
Отключить такое поведение можно с помощью флага -quiet
/-q
:
$ dotenv-linter --quiet
.env:1 LeadingCharacter: Invalid leading character detected
Цветной вывод ????
Для улучшения удобства использования, мы добавили цветной вывод предупреждений:
Отключить цветной вывод можно с помощью флага -
.
Поддержка многострочных значений ????
В .env
файлах можно хранить многострочные значения. Один из вариантов выглядит следующим образом:
# .env
MULTILINE="new\nline"
Но при проверке таких значений,
всегда выводил предупреждение:
$ dotenv-linter
.env:1 QuoteCharacter: The value has quote characters (', ")
Found 1 problem
Мы исправили это и теперь
не выводит предупреждения для многострочных значений, обернутых кавычками.
Поддержка export
префикса ????
Некоторые библиотеки для работы с .env
файлами, такие как: dotenv
, godotenv
и
поддерживают export
префикс:
# .env
export S3_BUCKET=YOURS3BUCKET
export SECRET_KEY=YOURSECRETKEYGOESHERE
export
префикс дает возможность экспортировать переменные окружения из файла с помощью команды source
:
$ source .env
При проверке таких файлов,
всегда выводил предупреждения:
$ 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
В новой версии мы добавили поддержку export
префикса и теперь
не выводит никаких предупреждений.
Поддержка пробелов ????
Ещё одним из улучшений стала поддержка пробелов в значениях, обернутых кавычками:
# .env
WHITESPACES="a b c"
Теперь, для таких значения
не будет выводить предупреждения.
Улучшенная проверка ????
Также, мы исправили проблему, при которой
мог выводить не все предупреждения за один раз:
$ 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
Улучшение производительности ????
И последнее, но не по значению — мы улучшили производительность и без того быстрого
, что теперь максимальное время запуска уменьшилось с 9.3 мс
до 4.3 мс
(более чем на 50%) ????
Чтобы проверить это, мы сделали бенчмарк с помощью утилиты 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
Это все ключевые изменения, которые вошли в новый релиз v3.0.0. Спасибо всем кто участвовал в подготовке этого релиза. Вы можете поддержать нас и поставить звезду на GitHub ⭐️
Также вы можете стать спонсором на GitHub Sponsors или OpenCollective ❤️