Environment variables are a way to retrieve values that may come from build processes, and are sometimes sensitive, like API keys. For local development access, those are typically stored in a .env
file at the root of your site, and not checked in to version control in order to keep them private.
Creating and Accessing .env
Variables
#You you may want to create your own variables to determine the difference between your production
vs development
environment.
For this, you'll start with a modification to your build scripts, such as:
"start": "cross-env ELEVENTY_ENV=dev eleventy --serve",
"build": "cross-env ELEVENTY_ENV=prod eleventy",
I'm including cross-env
for cross-platform compatibility.
Then add to a _data
file of your choice, perhaps to your site's meta.js
or a dedicated file:
module.exports = {
env: process.env.ELEVENTY_ENV,
};
Access .env
Value With Templating
#Then you can output the value as demonstrated for the other meta
keys, or use within templating such as to control whether or not analytics scripts are included:
{% if meta.env == 'prod' %}
// analytics here
{% endif %}
Access .env
Values in .eleventy.js
#If you are trying to access environment values in .eleventy.js
, you will access them directly as process.env.ELEVENTY_ENV
.
If you set .env
variables in an actual .env
file and/or as part of your build pipeline, you will need to include the following in the custom _data
or .eleventy.js
file:
// First `npm install dotenv`
require("dotenv").config();
// Example access
const API_KEY = process.env.API_KEY;