Jekyll
使用 Ruby、Markdown 和 Liquid 构建博客与内容网站的成熟静态站点生成器。
项目概述
Jekyll 将 Markdown、Front Matter、Liquid 模板和数据文件转换为静态网站。它拥有稳定的主题与插件生态,并与 GitHub Pages 深度集成,是博客、项目文档和个人网站的经典方案。
Jekyll 是采用 MIT 许可证的 Ruby 静态站点生成器,最初由 GitHub 联合创始人 Tom Preston-Werner 创建。它读取 Posts、Pages、Collections、Data Files 和 YAML Front Matter,再通过 Liquid、Layout 与 Include 生成静态文件。Jekyll 自带博客友好的日期、分类、标签和永久链接约定,并可通过 Ruby Gems 分发主题与插件;GitHub Pages 也能直接从仓库源码构建受支持的 Jekyll 站点。
主要特点
Jekyll 用约定清晰的内容目录、Liquid 模板和 Ruby 生态提供成熟的静态发布流程。
Posts 与 Front Matter
按日期命名的 _posts 文件和 YAML Front Matter 可管理标题、时间、分类、标签、Layout 与自定义字段。
Liquid 模板系统
通过 Object、Tag 和 Filter 渲染 site、page、post 和 collection 数据,模板能力受控且适合内容生成。
Layouts 与 Includes
Layout 可以嵌套页面骨架,_includes 则复用导航、卡片和 SEO 片段,减少模板重复。
Collections 与 Data Files
自定义 Collection 可组织文档、团队、产品等非文章内容,_data 中的 YAML、JSON、CSV 和 TSV 可作为结构化数据源。
Gem 主题系统
主题可封装 Layout、Include、Sass、静态资源和插件依赖,项目只覆盖需要定制的同名文件。
Ruby 插件生态
Generator、Converter、Tag、Filter、Hook 和自定义命令可扩展内容生成、模板语法与构建流程。
博客与发布能力
内置 Permalink、Draft、Future Post、Excerpt、Category、Tag、Pagination,以及 Feed、SEO 等常用插件。
GitHub Pages 集成
仓库可由 GitHub Pages 直接构建和托管,也能使用 Actions 安装完整依赖后获得自定义插件与构建控制。
适用场景
适合以 Markdown 内容为主、动态交互较少,并希望稳定托管在 GitHub Pages 或静态平台的项目。
个人博客与作品集
文章日期、标签、归档、主题和静态托管适合长期写作、个人主页及摄影作品集。
开源项目文档
Markdown、Git 工作流和 GitHub Pages 适合将 README 扩展为指南、版本说明和贡献文档。
项目与组织主页
用户、组织和仓库 Pages 能低成本发布产品介绍、课程、社区或活动网站。
小型内容网站
Pages、Collections 和 Data Files 可组织团队、服务、案例和常见问题,而无需运行数据库。
发布记录与技术日志
按日期的 Posts 和 Git 历史适合 Changelog、工程周报、研究笔记及内部静态知识站。
Ruby 团队的静态前端
熟悉 RubyGems、Bundler 和 Liquid 的团队可以直接编写插件、Generator 和自定义内容流程。
优点与注意事项
技术选型不仅要看能力,也要理解它带来的团队成本。
主要优点
Jekyll 擅长的地方
- 内容目录和博客约定成熟,Markdown 写作流程简单
- Liquid 模板能力受控,内容作者较容易理解和维护
- 主题、插件和历史教程丰富,长期稳定性良好
- GitHub Pages 可直接从仓库源码构建并提供免费托管
- Collections、Data Files 和 Front Matter 足以组织多种内容模型
- 输出标准静态文件,不要求客户端框架或专用运行时
需要注意
采用前应考虑的问题
Ruby、RubyGems、本地编译依赖和 Bundler 版本可能因操作系统不同产生问题,应使用版本管理器并提交 Gemfile.lock。
内容、插件和 Liquid 循环增长后,全量构建通常慢于 Hugo;应减少高成本 Filter、使用增量构建并测量 CI 时间。
原生 Pages 构建使用 Safe Mode,只允许白名单插件;需要任意 Ruby 插件时应通过 Actions 自行构建和部署。
Liquid 有意限制模板执行能力,复杂转换应移入 Data、Generator、Filter 或构建前脚本。
复制并修改主题 Layout 后,该文件不会自动获得上游更新;应尽量通过配置、CSS 和局部 Include 定制。
搜索、评论、表单、认证和实时数据通常需要客户端 JavaScript、第三方服务或独立后端。
快速开始
使用官方脚手架和 Minima 主题创建博客,再添加配置、文章与自定义 Layout。
bashruby --version
gem install jekyll bundler
jekyll new myblog
cd myblog
bundle exec jekyll serve --livereloadyaml# _config.yml
title: 开源项目志
description: 记录值得关注的开源软件
url: https://example.org
baseurl: ""
permalink: /posts/:title/
plugins:
- jekyll-feed
- jekyll-seo-tagmarkdown---
layout: post
title: "Hello Jekyll"
date: 2026-07-24 09:00:00 +0800
categories:
- 开源工具
tags:
- Jekyll
- SSG
---
Jekyll 使用 Markdown、YAML Front Matter 和 Liquid 生成静态页面。
访问 [Jekyll 官网]({{ "https://jekyllrb.com/" }}) 了解更多。html---
layout: default
---
<article class="post">
<header>
<h1>{{ page.title }}</h1>
<time datetime="{{ page.date | date_to_xmlschema }}">
{{ page.date | date: "%Y-%m-%d" }}
</time>
</header>
{{ content }}
<ul>
{% for tag in page.tags %}
<li>{{ tag }}</li>
{% endfor %}
</ul>
</article>bash# 将 Layout 保存为 _layouts/post.html
bundle exec jekyll doctor
JEKYLL_ENV=production bundle exec jekyll build
# 生成结果位于 _site 目录下一步:始终通过 Bundler 锁定 Jekyll、主题和插件版本,并使用 bundle exec 执行命令;部署到 GitHub Pages 前确认插件白名单,或改用 GitHub Actions 自行构建。
类似项目
这些工具也将内容和模板构建为静态页面,但采用不同语言、模板系统与扩展方式。
Jekyll vs Hugo
Jekyll 和 Hugo 都是成熟的内容型静态站点生成器;Jekyll 以 Ruby、Liquid 和 GitHub Pages 生态见长,Hugo 则以单文件工具、构建速度和内置内容能力见长。
| 比较维度 | Jekyll | Hugo |
|---|---|---|
| 核心实现 | Ruby Gem,通过 Bundler 管理 | Go 编写的独立可执行文件 |
| 模板系统 | Liquid、Layout、Include 与 Filter | Go html/template、Partial 与丰富函数 |
| 内容模型 | Posts、Pages、Collections 和 Data Files | Section、Page Bundle、Taxonomy 和 Page Resource |
| 构建性能 | 中小站点足够,插件和内容增长后需优化 | 通常更适合大量页面和频繁全量构建 |
| 图片与资源 | Sass 内置较成熟,图片通常依赖插件 | Hugo Pipes 和 Image Processing 集成更完整 |
| 多语言 | 通常通过目录约定、插件或多次构建实现 | 内置语言、翻译关联与本地化能力 |
| 托管生态 | 与 GitHub Pages 原生集成紧密 | 可部署到任意静态平台,CI 需安装 Hugo |
| 更适合 | GitHub Pages、Ruby 团队、博客和项目文档 | 大型、多语言、图片丰富和重视构建速度的站点 |
如果项目天然托管在 GitHub、团队熟悉 Ruby,或希望使用稳定的 Liquid 博客生态,Jekyll 仍然可靠;如果内容数量很大、需要内置多语言和图片管线,或 CI 构建速度非常重要,Hugo 通常更合适。选择前应分别验证主题维护状态、插件限制和本地环境成本。
资料核验
版本、维护信息与本页采用的官方资料来源。
本次核验覆盖 Jekyll 的核心定位、主要能力、官方入口与开源许可。项目版本持续更新,具体补丁版本、兼容性和迁移要求请在采用前继续核对官方发布记录。
官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 6 月 22 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。