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-metadatais ever created in your project. Jigyll's build cache lives outside the source tree, injigyll-$USERunder the system temp directory ($TMPDIRon macOS,/tmpon Linux). Set theJIGYLL_DISABLE_CACHEenvironment 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