Загрузка локальных переменных среды для использования в сценариях NPM - PullRequest
1 голос
/ 16 мая 2019

У меня есть сценарий NPM, который выглядит следующим образом:

"start": "server start --host $DEV_HOST"

Есть много других скриптов, которые также ссылаются на $DEV_HOST env.

В настоящее время $DEV_HOST экспортируется в мой ~/.bashrc, но я хотел бы найти способ определения его локально для проекта, например, в файле .env.

Я задавался вопросом, предлагает ли npm хук preall, который позволяет вызывать простой файл bash, который может загружаться в локальные envs, но такого хука не существует.

Также кажется, что NPM не предлагает никакого механизма загрузки для локальных envs из коробки.

В настоящее время я могу думать только о следующих решениях:

  1. Переместите все скрипты, которым требуется локальный env, в свои собственные файлы bash и загрузите в файл .env в каждом из них.

  2. Вызовите отдельный скрипт перед каждым скриптом, которому нужен локальный env, который загружается в envs из файла .env.

Оба они кажутся излишне громоздкими и плохо масштабируются.

Есть ли способ загрузить envs, определенные в локальном файле проекта, чтобы они были доступны для использования в скриптах NPM?

Примечание: Я не спрашиваю, как загрузить envs в приложение. Я спрашиваю, как сделать envs доступными для скриптов npm. Две вещи совершенно разные. Dot-env добавляет envs к текущему процессу. Даже если вы создали скрипт узла, который использовал dot-env для загрузки некоторых envs, эти envs не будут доступны через переменные $, поскольку они не загружаются в среду. Они будут доступны только в том же процессе через process.env.

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете просто отобразить переменную окружения в вашем скрипте NPM.

Например, запустите следующую команду в командной строке в корне проекта:

export SOME_ENV=blalala

, затем в вашем package.json вы можете использовать его так:

"scrips:" {
  "print-env": "echo $SOME_ENV"
}

выводит blalala на консоль.

Если вы хотите определить переменные окружения в .env, которые будут доступны в ваших скриптах, используйте что-то вроде этого: https://www.npmjs.com/package/better-npm-run

npm i better-npm-run

создайте свой .env файл, затем используйте переменные точно так, как показано выше

...