Контекст
С ростом количества сервисов и зависимостей (PostgreSQL, Redis, ClickHouse, Loki, CASL секреты) ручное управление файлом .env становится источником ошибок и "забытых" переменных. Необходимо создать внутренний CLI-инструмент, который будет сканировать .env.example, запрашивать у разработчика недостающие значения в интерактивном режиме и валидировать их. Это критично для быстрой настройки локального окружения и унификации конфигураций в команде.
Технические требования
- Локация логики:
scripts/env-setup.ts или отдельный пакет packages/cli-tools
- Инструменты: Node.js,
commander или yargs (для CLI-интерфейса), inquirer или enquirer (для интерактивных опросов), dotenv.
- Логика работы:
- Считать файл
.env.example и составить список необходимых ключей.
- Проверить наличие существующего
.env. Если файл есть, загрузить текущие значения как дефолтные.
- Итерироваться по списку ключей и выводить интерактивный Prompt:
- Для стандартных строк: обычный ввод.
- Для портов: валидация на число.
- Для секретов (JWT, пароли): автоматическая генерация безопасной строки по запросу.
- Для логических флагов: переключатель (Yes/No).
- Записать итоговый результат в
.env, сохранив структуру и комментарии из примера.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Скрипт должен работать быстро, не требуя поднятия базы данных или других тяжелых зависимостей.
- Ошибки: Если
.env.example отсутствует, выводить понятное сообщение об ошибке и завершать процесс с кодом 1.
- Безопасность: Никогда не сохранять введенные секреты в логи или историю команд. Добавить автоматическое добавление
.env в .gitignore, если он там отсутствует, при первом запуске скрипта.
Контекст
С ростом количества сервисов и зависимостей (PostgreSQL, Redis, ClickHouse, Loki, CASL секреты) ручное управление файлом
.envстановится источником ошибок и "забытых" переменных. Необходимо создать внутренний CLI-инструмент, который будет сканировать.env.example, запрашивать у разработчика недостающие значения в интерактивном режиме и валидировать их. Это критично для быстрой настройки локального окружения и унификации конфигураций в команде.Технические требования
scripts/env-setup.tsили отдельный пакетpackages/cli-toolscommanderилиyargs(для CLI-интерфейса),inquirerилиenquirer(для интерактивных опросов),dotenv..env.exampleи составить список необходимых ключей..env. Если файл есть, загрузить текущие значения как дефолтные..env, сохранив структуру и комментарии из примера.Цель и критерии приемки (Definition of Done)
npm run env:setupилиmake env..env.example, включая комментарии, и создает валидный.env.--forceдля перезаписи всех значений и--verifyдля проверки наличия всех обязательных переменных без участия пользователя.preinstallилиpostinstallхуки проекта для автоматического напоминания о настройке.Важные указания
.env.exampleотсутствует, выводить понятное сообщение об ошибке и завершать процесс с кодом1..envв.gitignore, если он там отсутствует, при первом запуске скрипта.