Задать вопрос

Как динамически экспортировать переменные из .env файла, чтобы использовать их при вызове команд?

Чешутся руки. Но не получается.

Есть файл с переменными .env
Я его использую в проекте через dotenv
В проекте используется postgres
Также в package.json есть команды на заполнение базы.

"db:create": "psql -h localhost -U postgres -f ./src/backend/database/sql/schema.sql",

"db:fill": "psql -h localhost -U postgres -f ./src/backend/database/sql/fill-db.sql",

"db:drop": "dropdb --if-exists -h localhost -U postgres -e typoteka",

"db:init": "node -r ./config ./src/backend/database/db-init.js",

"db:all": "cross-env COUNT=20 npm-run-all generate db:drop db:create db:init db:fill",


для выполнения sql скриптов используется psql терминал.
каждый раз при вызове он требует пароль для каждого подключения к базе. ну я его 1 раз пропишу в процессе разработки в команде

"db:all": "cross-env COUNT=20 PGPASSWORD=password npm-run-all generate db:drop db:create db:init db:fill"

и не просит. но это неправильно.

хочется динамически подгрузить переменные из файла. их экспортировать и чтобы они пробрасывались при вызове db:all или любой другой команды

хочется кроссплатформенный способ. операционка - винда. без использования WSL.
  • Вопрос задан
  • 338 просмотров
Подписаться 1 Сложный 7 комментариев
Пригласить эксперта
Ответы на вопрос 3
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
.pgpass же, его можно генерить предварительно.
Ответ написан
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
операционка - винда

а что мешает старый добрый батник написать?

вообще я бы посоветовал за пару дней изучить азы того же php или vbsсript - они довольно просты и позволяют решить подобные проблемы за пару минут.
Ответ написан
2ord
@2ord
Не работаю с node.js, но в документации dotenv приведен пример:
node -r dotenv/config your_script.js

В этом скрипте можно обрабатывать аргументы для запуска различных сценариев и пользоваться process.env.DB_PASS и прочими секретами.
Помимо прочего, файлы .env не предназначены для production. Вместо них нужно использовать переменные окружения, которые в Windows устанавливаются по-своему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы