Исправьте файл .env с помощью serverless-dotenv-plugin - PullRequest
0 голосов
/ 04 июля 2018

В качестве пользовательской конфигурации плагина serverless-dotenv-plugin я использую следующее:

custom: dotenv: path: .env-${opt:stage, 'local'}

Но то, что я действительно пытаюсь получить, это то, что среда загружается из файла .env, когда я не даю аргументов, и файла .env.staging, когда я использую staging в качестве аргумента CLI.

Я не знаю, как это может быть отражено в path выше. Любая помощь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я автор serverless-dotenv-plugin. Возникла материально-техническая проблема при попытке динамически загружать файлы env от поставщика или других опций. С тех пор я обновил плагин, чтобы вы могли динамически загружать файлы env в зависимости от установленной среды.

Например, если вы запустите "NODE_ENV = production sls deploy", он будет искать файл с именем .env.production. Если он не найден, он вернется к .env.

Подробнее см. В README https://github.com/infrontlabs/serverless-dotenv-plugin

0 голосов
/ 20 сентября 2018

Я получил ваш вариант использования, просто используя обычный dotenv плагин.

В моем serverless.yaml я указываю переменные среды, которые должны быть загружены из файла, на основе параметра stage (dev по умолчанию):

provider: 
  stage: ${opt:stage, 'dev'}
  environment:
    FOO: ${file(./config.${self:provider.stage}.js):getEnvVars.FOO}
    BAR: ${file(./config.${self:provider.stage}.js):getEnvVars.BAR}

Затем один файл на этап, который загружает переменные среды справа .env file:

config.dev.js:

require('dotenv').config({path: __dirname + '/dev.env'});
const config = require('./environmentVariables.js');
module.exports.getEnvVars = config.getEnvVars;

config.staging.js:

require('dotenv').config({path: __dirname + '/staging.env'});
const config = require('./environmentVariables.js');
module.exports.getEnvVars = config.getEnvVars;

Вместо того, чтобы экспортировать все переменные среды в каждом из приведенных выше файлов конфигурации, я создал вспомогательный файл для этого (environmentVariables.js):

module.exports.getEnvVars = () => ({
    FOO: process.env.FOO,
    BAR: process.env.BAR
});

Последний, но не менее важный файл .env, содержащий фактические переменные. Я назвал файлы dev.env и production.env.

FOO=foo
BAR=bar

Это работает как шарм, единственным недостатком является то, что вам нужно редактировать несколько разных файлов всякий раз, когда вы хотите добавить новую переменную среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...