Environment Variables #
You can set and use your own environment variables in your projects. They will be available in your code via Node.js’ process.env
property.
These are typically used for setting your deployment context and private API keys. This is also the approach used to enable DEBUG
mode.
Setting your own #
Via .env
file #
For private keys and other sensitive information, you’ll want to create a .env
file and use the dotenv
package to setup those values.
Make sure you add
.env
to your .gitignore
file. Do not commit your .env
file to your repository!!Via the command line #
Mac OS (or Linux, etc) #
MY_ENVIRONMENT=production npx @11ty/eleventy
Windows cmd.exe #
set MY_ENVIRONMENT=production & npx @11ty/eleventy
Windows Powershell (VS Code default) #
$env:MY_ENVIRONMENT="production"; npx @11ty/eleventy
Via an npm script #
You can also use the above commands in an npm script in your project’s package.json
file.
Filename package.json
{
"scripts": {
"build:prod": "MY_ENVIRONMENT=production npx @11ty/eleventy"
}
}
Use Case Ideas #
- Expose Environment Variables to your templates using JavaScript Data Files.
- Opt-in to
git Last Modified
only in production - Only perform Eleventy Serverless plugin copy (via
copyEnabled
) in production - Use fewer image formats in the Image plugin to speed up local development
Eleventy Supplied New in v1.0.0 #
Node.js exposes environment variables under process.env
.
Eleventy also supplies its own Eleventy-specific environment variables, usually intended for more advanced use cases. You can use these in your configuration or in data files as needed.
process.env.ELEVENTY_ROOT
the absolute path to the directory in which you’ve run the Eleventy command.process.env.ELEVENTY_SOURCE
is the method in which Eleventy has run, current eithercli
orscript
.process.env.ELEVENTY_SERVERLESS
is set totrue
(String) if Eleventy is running in serverless mode. If Eleventy is not running in serverless mode—due to Node forcing environment variables to be strings—this variable will not exist.