Themes
Differs from Ruby Jekyll — modified
Themes resolve from a local _theme/<name> folder or Bundler. remote_theme supports only pinned GitHub owner/repository@40-character-SHA archives; branches, tags, URLs, and full plugin behavior remain unsupported. Theme _data, theme config, and theme.* variables are ignored.
Themes package layouts, includes, and stylesheets in a way that can be overridden by your site's content. A theme contributes its _layouts, _includes, _sass, and assets directories to your site's build.
Jigyll supports two separate theme mechanisms:
themeselects a local_theme/<name>directory or a Bundler theme.remote_themedownloads a pinned GitHub theme source archive.
Do not configure both keys. A build with both fails with:
_config.yml cannot specify both theme and remote_theme
Local themes
Activate a local or Bundler theme with the theme key in _config.yml:
theme: minima
Differs from Jekyll. There is no gem installation step. Jigyll resolves
themein two ways, in order:
A local
_themefolder — if<source>/_theme/<theme-name>/exists, it is used. This is the Jigyll-native way to vendor a theme: copy (or submodule) the theme's files there.Bundler fallback — otherwise, if
bundleis on yourPATH, Jigyll runsbundle show <theme-name>and uses the gem's directory. This lets an existing Jekyll project with aGemfilekeep working, but it requires a Ruby toolchain.If neither works, the build fails with an error.
Installing a local theme
For example, install Minima as a local theme:
mkdir -p _theme
git clone https://github.com/jekyll/minima.git _theme/minima
Then set theme: minima in your site's _config.yml.
Scaffolding with a local theme
jigyll new can clone and select a theme in one step:
jigyll new my-site --theme GIT_URL
This clones the repository to _theme/<theme-name>/ and writes theme: <theme-name> to my-site/_config.yml. The generated site has no local _layouts/default.html, so the selected theme's layout is used. The URL must resolve to a theme directory name and the repository must provide that layout.
Pinned GitHub remote themes
Use remote_theme only with an immutable GitHub commit:
remote_theme: just-the-docs/just-the-docs@394d6c0ec33852f8e593145d21344a955e908acb
The exact accepted syntax is owner/repository@<40-character-hex-SHA>. Branches, tags, shortened SHAs, omitted revisions, URLs, and non-GitHub hosts are intentionally unsupported. Jigyll constructs the archive request itself for https://codeload.github.com; configuration cannot choose another host.
The first build downloads and validates the archive, so it requires network access. Validated themes are cached at <user-cache-dir>/jigyll/themes/<sha256-normalized-spec>/ ($XDG_CACHE_HOME on Linux). Subsequent builds use that immutable cache entry without Git, submodule checkout, or another download.
What a theme provides
Jigyll reads these directories from the theme, with your site's own files always taking precedence:
_layouts— a page'slayoutis looked up in your site's_layoutsfirst, then the theme's._includes—{% include %}searches your site's_includesfirst, then the theme's._sass— the theme's partials are on the Sass load path; a same-named partial in your site's_sasswins.assets— theme assets are output unless your site has a file at the same path.
Differs from Jekyll. A theme's
_datadirectory (Jekyll 4.3+) and a theme-bundled_config.yml(Jekyll 4.0+) are ignored, the theme's gemspecruntime_dependenciesare not auto-loaded as plugins (list the emulated plugins you need explicitly), and there are notheme.*Liquid variables.
Overriding theme defaults
To replace layouts or includes in your theme, make a copy in your _layouts or _includes directory of the specific file you wish to modify, or create the file from scratch giving it the same name as the file you wish to override.
For example, if your selected theme has a page layout, you can override the theme's layout by creating your own page layout in the _layouts directory (that is, _layouts/page.html).
To modify a stylesheet, also copy the theme's main Sass file into the _sass directory in your site's source. Your theme's styles can be included in your stylesheet using the @import directive:
@import "theme-partial";
Creating themes
Jekyll's jekyll new-theme scaffolding and RubyGems publishing workflow don't apply to Jigyll. A Jigyll theme is just a directory with _layouts, _includes, _sass, and assets folders — anything that follows that shape (including any existing Jekyll theme's source) can be dropped into _theme/<name>/ and used directly.