Разбор файлов .env для OneScript: тот же файл конфигурации, что читают Docker Compose и инструменты
других языков.
Конфигурация приложения хранится в файле рядом с проектом, а не в исходном коде. Пароли и адреса не попадают в репозиторий,
а окружения различаются одним файлом. Библиотека читает такой файл и переносит объявленные в нём переменные в окружение
процесса, откуда их видит любой код, в том числе чужие библиотеки, ничего не знающие про .env.
# .env
DB_HOST=localhost
DB_PORT=5432
DB_URL=postgres://${DB_HOST}:${DB_PORT}/шоп
SECRET="ключ с # и пробелами"opm install dotenv
Зависимостей времени выполнения нет.
#Использовать dotenv
DotEnv.Загрузить(); // читает ./.env
Сообщить(ПолучитьПеременнуюСреды("DB_URL")); // postgres://localhost:5432/шопУже установленные переменные окружения имеют приоритет: значения из файла их не затирают. Так переменные, заданные в CI или в консоли, всегда выигрывают у файла разработчика.
// Файл побеждает окружение
DotEnv.Загрузить(".env.test", Новый Структура("Перезаписывать", Истина));
// Отсутствие файла считать ошибкой
DotEnv.Загрузить(".env", Новый Структура("ОбязательныйФайл", Истина));
// Разбор без побочных эффектов
Значения = DotEnv.Разобрать("KEY=значение");
Настройки = DotEnv.ПрочитатьФайл("config/.env.example");
// Конфигурация структурой: обращение через точку
Конфигурация = DotEnv.ЗагрузитьВСтруктуру(".env");
Сообщить(Конфигурация.DB_HOST);| Раздел | Содержание |
|---|---|
| Публичный API | Модуль DotEnv, сигнатуры методов, параметры, примеры |
| Формат файла | Правила разбора: кавычки, комментарии, подстановка |
| Продуктовое описание | Задача, сравнение с альтернативами, отличия от dotenv, ограничения |
| Выпуск релиза | Порядок публикации новой версии |
| Примеры | Запускаемые сценарии в каталоге examples/ |
Каждый файл запускается из корня проекта и печатает результат.
oscript examples/Загрузка.os
oscript examples/Разбор.os
oscript examples/Приоритет.os
| Пример | Что показывает |
|---|---|
Загрузка.os |
Три способа загрузки, поведение при отсутствии файла |
Разбор.os |
Кавычки, комментарии, экранирование, подстановка ${ИМЯ} |
Приоритет.os |
Кто побеждает при конфликте файла и окружения |
opm install --dev -l
oneunit execute -d ./tests