Edit on GitHub

Configuration

Differs from Ruby Jekyll — modified

A wrong YAML type for a supported key is a build error. markdown:, kramdown:, liquid:, and most sass: options are ignored — those behaviors are fixed. Front-matter defaults match by path prefix, not glob. Caches live in /tmp/jigyll-$USER, not ./.sass-cache.

Jigyll reads its settings from a _config.yml file in your site's root directory, exactly like Jekyll. Options can also be set with command-line flags, which take precedence over the config file.

Differs from Jekyll. Only _config.yml is read — there is no _config.toml support. And Jigyll is strict about types: a wrong YAML type for a supported key (a list where a string is expected, or vice versa) is a build error, where Jekyll often coerces or ignores it. Unknown keys are fine — they simply become site.* variables.

Multiple config files

Pass a comma-separated list to --config; later files override earlier ones:

jigyll build --config _config.yml,_config.production.yml

The JEKYLL_CONFIG environment variable is used as the file list when --config is not given.

Default configuration

Jigyll's defaults, which your _config.yml overrides:

# Where things are
source:       .
destination:  ./_site
layouts_dir:  _layouts
data_dir:     _data
includes_dir: _includes
collections:
  posts:
    output:   true

# Handling Reading
include:              [".htaccess"]
exclude:              ["Gemfile", "Gemfile.lock", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"]
keep_files:           [".git", ".svn"]
markdown_ext:         "markdown,mkdown,mkdn,mkd,md"

# Plugins
plugins:   []

# Conversion
excerpt_separator: "\n\n"
incremental: false

# Serving
port:    4000
host:    127.0.0.1
baseurl: "" # does not include hostname

# Outputting
permalink: date
timezone:  null

verbose: false
sass:
  sass_dir: _sass

Other supported keys: theme, url, show_drafts, future, unpublished, defaults (see below). permalink accepts the date, pretty, ordinal, and none styles or a custom template string.

Front matter defaults

The defaults key works like Jekyll's — an array of scope/values pairs:

defaults:
  - scope:
      path: ""        # empty string matches all files
      type: "posts"   # optional: pages, posts, drafts, or a collection name
    values:
      layout: "default"

Later entries override earlier ones, and front matter in the file itself always wins.

Differs from Jekyll. path is matched as a plain prefix, not a glob — path: "section" matches everything under section/, but path: "section/*/special-page.html" will not work.

Environments

The JEKYLL_ENV environment variable is exposed to Liquid as jekyll.environment, defaulting to development:

JEKYLL_ENV=production jigyll build
{% if jekyll.environment == "production" %}
  {% include analytics.html %}
{% endif %}

Jigyll also honors JEKYLL_URL, which overrides the configured url.

Markdown and Liquid options

Differs from Jekyll. Jekyll's markdown:, kramdown:, and liquid: configuration sections are ignored. Jigyll has a single built-in goldmark renderer that is not configurable, and Liquid error handling is fixed: undefined filters and tags are build errors, undefined variables render as empty. error_mode, strict_variables, and strict_filters have no effect.

Sass options

Sass/SCSS conversion is always on (see jekyll-sass-converter). Of Jekyll's sass: options, only sass_dir is honored:

sass:
  sass_dir: _sass   # the default

Differs from Jekyll. Output is always minifiedstyle is ignored. Conversion requires the Dart Sass sass executable on your PATH. Compiled CSS is cached in /tmp/jigyll-$USER, not ./.sass-cache.

Incremental regeneration

As in Jekyll, pass --incremental (-I) or set incremental: true to only regenerate documents whose sources (or included templates/layouts) changed.

Unsupported keys

paginate and paginate_path are ignored — pagination is not implemented. safe, whitelist, highlighter, lsi, limit_posts, and profile have no effect. Plugins are configured with plugins: (the legacy gems: alias also works) — never a Gemfile.