Исправьте файл.env с помощью serverless-dotenv-plugin

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

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

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

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

2 ответа

Я получил ваш вариант использования, просто используя обычный плагин 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

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

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

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

Смотрите README для получения более подробной информации https://github.com/infrontlabs/serverless-dotenv-plugin

Другие вопросы по тегам