Skip to content

Instantly share code, notes, and snippets.

Last active January 22, 2023 15:56
  • Star 49 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Make environment variables available in Jekyll Liquid templates

Environment variables in Jekyll templates

This is one way to pass some data (API tokens, etc.) to your Jekyll templates without putting it in your _config.yml file (which is likely to be committed in your GitHub repository).

Copy the environment_variables.rb plugin to your _plugins folder, and add any environment variable you wish to have available on the site.config object.

In a Liquid template, that information will be available through the site object. For example, _layouts/default.html could contain:

   <!-- ... -->
  {% if site.env == 'production' %}
    <link rel="stylesheet" href="/build/style.min.css">
  {% else %}
    <link rel="stylesheet" href="/style.css">
  {% endif %}

Running jekyll build will use style.css by default. If you set export JEKYLL_ENV=production before running jekyll build, it will use style.min.css.

# Plugin to add environment variables to the `site` object in Liquid templates
module Jekyll
class EnvironmentVariablesGenerator < Generator
def generate(site)
site.config['env'] = ENV['JEKYLL_ENV'] || 'development'
# Add other environment variables to `site.config` here...
Copy link

leogzyl commented Jan 22, 2023

Really helpful, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment