Jekyll 目录结构 Directory Structure

一个基础的 Jekyll 网站目录结构如下所示(主要文件):

.
├── _config.yml
├── _data
│   └── members.yml
├── _drafts
│   ├── begin-with-the-crazy-ideas.md
│   └── on-simplicity-in-technology.md
├── _includes
│   ├── footer.html
│   └── header.html
├── _layouts
│   ├── default.html
│   └── post.html
├── _posts
│   ├── 2007-10-29-why-every-programmer-should-play-nethack.md
│   └── 2009-04-26-barcamp-boston-4-roundup.md
├── _sass
│   ├── _base.scss
│   └── _layout.scss
├── _site
├── .jekyll-cache
│   └── Jekyll
│       └── Cache
│           └── [...]
├── .jekyll-metadata
└──index.html 也可以是一个带有有效 Font matter(页面头部参数)的 `index.md` 文件。
使用基于 gem 的主题的 Jekyll 网站目录结构

从 Jekyll 版本 3.2 开始,用 jekyll new 创建的新项目会使用 gem 主题 来定义网站的外观。这样一来,默认的目录结构变得更简单了:像 _layouts_includes_sass 这些文件夹默认都放在主题 gem 里,而不是你的项目里。


目前默认的主题是 minima。如果你想查看这个主题的文件存放在电脑的哪个位置,可以运行命令 bundle info minima

以下是每个文件或目录的功能概述:

文件 / 目录 描述

_config.yml

存储配置数据,相对于网站设置或者网站的系统设置。许多选项可以通过命令行指定,使用 _config.yml 文件进行配置更方便,不需要每次在命令添加选项参数。

_drafts

草稿是未发布的文章内容。这些文件的格式不带日期:title.MARKUP。 了解如何管理草稿

_includes

包含可以被布局和文章混合使用的部分,方便重复使用。可以使用 Liquid 标签 {% include file.ext %} 引入位于 _includes/file.ext 的部分内容。include 支持引用_includes中子目录的文件内容。

_layouts

这些是用于包裹文章内容的布局模板。布局可以在页面头部参数中逐篇文章选择。 使用 Liquid 标签 {{ content }} 将内容注入网页中。也可以通过_config.yml 针对文件夹全部内容或者集合指定默认布局文件。

_posts

这是您的动态内容。文件命名必须按照规范,遵循以下格式: YEAR-MONTH-DAY-title.MARKUP(示例:2025-01-28-第一篇文章.md)。 每篇文章的永久链接可以自定义,但日期和标记语言仅由文件名决定。

_data

格式良好的站点数据应放置在此处。Jekyll 引擎会自动加载该目录中的所有数据文件(支持 .yml.yaml.json.csv.tsv 格式和扩展名),并可通过 site.data 访问。如果该目录下有文件 members.yml,则可以通过 site.data.members 访问文件内容。

_sass

该目录存放 Sass 的部分样式文件,可以导入到 main.scss 中,最终生成一个名为 main.css 的样式文件,用来控制网站的外观。如果想了解更多,可以看看资源管理教程

_site

这是 Jekyll 转换完成后生成的网站默认存放的位置。 建议将其添加到 .gitignore 文件中,避免Git push 时上传到仓库。

.jekyll-cache

用于保存生成页面和标记语言(例如:markdown)的副本,以加快加载速度。 运行 jekyll serve 等命令时会生成此目录。 可以通过配置选项或标志禁用。 此目录不会包含在生成的网站中。建议将其添加到 .gitignore 文件中。

.jekyll-metadata

此文件帮助 Jekyll 跟踪自上次构建以来未被修改的文件, 以及下次构建时需要重新生成的文件。 仅在使用增量生成时(例如运行 jekyll serve -I)创建。 此文件不会包含在生成的网站中。建议将其添加到 .gitignore 文件中。

index.htmlindex.md 以及其他 HTML、Markdown 文件

只要文件包含 Font matter(页面头部参数) 部分,Jekyll 就会对其进行转换。 对于站点根目录或上述未列出的目录中的任何 .html.markdown.md.textile 文件,也会执行相同的操作。

其他文件/文件夹

除了上述特殊情况外,其他所有目录和文件(如 cssimages 文件夹、 favicon.ico 文件等)都会原样复制到生成的网站中。 如果你想了解这些网站的布局,不妨看看已经有很多 使用 Jekyll 的网站

source 目录中以 ., _, #~ 开头的所有文件或文件夹都不会被包含在 destination 文件夹中。如果需要复制这些路径,必须在配置文件中的 include 指令中显式指定:

include:
 - _pages
 - .htaccess