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.ymlis read — there is no_config.tomlsupport. 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 becomesite.*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.
pathis matched as a plain prefix, not a glob —path: "section"matches everything undersection/, butpath: "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:, andliquid: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, andstrict_filtershave 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 minified —
styleis ignored. Conversion requires the Dart Sasssassexecutable on yourPATH. 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.