Как передать переменные среды из файла в команду узла - PullRequest
1 голос
/ 07 мая 2019

У меня есть команда, которую я установил через npm (db-migrate).Я хочу запустить его из командной строки как часть автоматизации миграции базы данных.Файл конфигурации для скрипта может ссылаться на переменные среды.Я уже устанавливаю учетные данные базы данных как переменные среды в другом файле.Поэтому вместо того, чтобы устанавливать их дважды, я сказал конфигурации миграции использовать переменные среды.Проблема в том, как получить переменные среды из файла перед запуском сценария миграции?Кроме того, как я могу запустить скрипт миграции непосредственно из npm bin?

Я нашел хорошее общее решение этой проблемы, поэтому я публикую вопрос и ответ, по крайней мере, в интересах моегобудущее я.

1 Ответ

2 голосов
/ 07 мая 2019

Это можно сделать с помощью нескольких инструментов:

  1. Считайте переменные среды из файла и установите их перед запуском скрипта. Чтобы проверить, просто установить переменную среды перед запуском команды:
PORT=3000 node index.js

Но мы хотим прочитать переменные из файла. Это можно сделать с помощью export и xargs:

export $(cat app.env | xargs)
  1. Мы хотим запустить скрипт напрямую из bin в npm. Путь к папке bin можно получить с помощью npm bin. Поэтому нам просто нужно добавить это к пути перед запуском команды:
PATH=$(npm bin):$PATH
  1. Теперь соберите их вместе:
export $(cat app.env | xargs) && PATH=$(npm bin):$PATH db-migrate up

Это читает переменные окружения, устанавливает их, добавляет npm bin к пути и затем запускает сценарий миграции.

Кстати, содержимое app.env будет выглядеть примерно так:

PORT=3000
DB_NAME=dev
DB_USER=dev_user
DB_PASS=dev_pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...