#Resolution of environment variables

With useDotenv: true set in your serverless.yml file, framework automatically loads environment variables from .env files with the help of dotenv. In addition, .env files are excluded from the package when useDotenv is set in order to avoid uploading sensitive data as a part of package by mistake. Starting with next major version, .env files will be loaded by default and useDotenv setting will be ignored.

#Support for .env files

The framework looks for .env and .env.{stage} files in service directory and then tries to load them using dotenv. If .env.{stage} is found, .env will not be loaded. If stage is not explicitly defined, it defaults to dev.

#Variable expansion

It is possible to define environment variables as a combination of existing ones:

BASE_URL=my.api.com
PROTOCOL=https

URL=$PROTOCOL/$BASE_URL

This is supported through dotenv-expand

#Differences against serverless-dotenv-plugin

There are a few differences between above functionality and serverless-dotenv-plugin:

  • The framework only loads environments variables locally and does not pass them to your function's environment
  • The framework loads variables from only one .env file (if stage-specific .env is found, default .env is not loaded)
  • The framework does not support .env.local, .env.{stage}.local, and .env.development files in a similar way to the plugin
  • The framework does not use NODE_ENV variable and --env flag when determining stage

Have questions?

Head over to the forums to search for your questions and issues or post a new one.