Edit on GitHub

Directory Structure

Differs from Ruby Jekyll — modified

No .jekyll-cache, .sass-cache, or .jekyll-metadata — the build cache lives in jigyll-$USER under the system temp dir, and jigyll serve renders in memory without writing _site.

A basic Jigyll site usually looks something like this:

.
├── _config.yml
├── _data
│   └── members.yml
├── _drafts
│   ├── 2026-07-01-begin-with-the-crazy-ideas.md
│   └── 2026-07-03-on-simplicity-in-technology.md
├── _includes
│   ├── footer.html
│   └── header.html
├── _layouts
│   ├── default.html
│   └── post.html
├── _posts
│   ├── 2025-10-29-why-every-programmer-should-play-nethack.md
│   └── 2026-04-26-barcamp-boston-4-roundup.md
├── _sass
│   ├── _base.scss
│   └── _layout.scss
├── _site
└── index.html # can also be an 'index.md' with valid front matter

Differs from Jekyll. No .jekyll-cache, .sass-cache, or .jekyll-metadata is ever created in your project. Jigyll's build cache lives outside the source tree, in jigyll-$USER under the system temp directory ($TMPDIR on macOS, /tmp on Linux). Set the JIGYLL_DISABLE_CACHE environment variable to turn it off. Note the draft filenames above carry date prefixes — Jigyll requires them, unlike Jekyll.

An overview of what each of these does:

File / Directory Description
_config.yml Stores configuration data. Many of these options can be specified from the command line, but it's easier to specify them here so you don't have to remember them.
_drafts Drafts are unpublished posts. Learn how to work with drafts.
_includes These are the partials that can be mixed and matched by your layouts and posts to facilitate reuse. The Liquid tag {% include file.ext %} can be used to include the partial in _includes/file.ext.
_layouts These are the templates that wrap posts and pages. Layouts are chosen on a page-by-page basis in the front matter. The Liquid tag {{ content }} is used to inject content into the web page.
_posts Your dynamic content: blog posts. The naming convention of these files is important, and must follow the format YEAR-MONTH-DAY-title.MARKUP. The permalinks can be customized for each post, but the date and markup language are determined solely by the file name.
_data Well-formatted site data should be placed here. Jigyll autoloads .yml, .yaml, .json, and .csv files in this directory (subfolders are namespaced by folder name), accessible via site.data.
_sass These are Sass partials that can be imported into your main.scss, which is then processed into a single stylesheet. See assets.
_site This is where the generated site is placed when you run jigyll build. It's a good idea to add this to your .gitignore file. Note that jigyll serve renders entirely in memory and never writes here.
index.html or index.md, and other HTML/Markdown files Provided that the file has a front matter section, it will be transformed by Jigyll.
Other files/folders Except for the special cases listed above, every other directory and file — css, images, favicon.ico, and so forth — is copied verbatim to the generated site as a static file.

Every file or directory beginning with ., _, #, or ~ in the source directory is excluded from the destination. Such paths have to be explicitly listed in the config file under the include key to make sure they're copied over:

include:
  - _pages
  - .htaccess