使用 Jekyll 搭建我的 github.io
July 17, 2025
Jekyll 简介
Jekyll 是一个高效、简洁且极具透明性的静态网站生成器,由 GitHub 联合创始人 Tom Preston-Werner 开发,采用 Ruby 编写。它允许你用最直观的方式(Markdown + 配置文件)来管理和发布内容,无需数据库和繁琐的后端开发。
Jekyll 广泛应用于个人博客、学术主页、项目文档、API 文档等场景,GitHub Pages 也原生支持 Jekyll,使得部署变得极其简单。它特别适合那些喜欢”所见即所得”与完全掌控内容结构的用户,以及追求轻量化、高性能网站的开发者。
它的核心优势在于:零数据库依赖,所有内容都存储在文件系统中,便于版本控制和备份;高度可定制,从内容结构到样式表现都可以精确控制;性能卓越,生成的静态网站加载速度极快且 SEO 友好;社区生态丰富,拥有大量主题、插件和扩展;Git 友好,完美适配 Git 工作流。
运行方式
在项目根目录下运行 bundle exec jekyll serve(或 jekyll serve),本地会自动启动一个服务器,监听所有文件变动并实时生成静态网页。
Jekyll 会自动将 _posts/ 下的每个 md 文件渲染为 HTML 并输出到 _site/ 目录。页面引用的图片、CSS、JS 等静态资源建议统一放在 assets/ 目录下,引用时用 /assets/xxx 路径,方便管理和迁移;你在 md 中插入的图片(如 )会被原样复制到 _site/assets/,页面访问时自动映射。
目录组织结构
主要目录结构与职责如下:
_posts/:存放所有博客文章,文件名格式为YYYY-MM-DD-title.md,每个 md 文件会被自动解析为独立的 HTML 页面。_layouts/:定义页面的整体布局(如 post、page、default 等),md 文件根据 Front Matter 里的 layout 字段套用相应模板。_includes/:可复用的页面片段(如导航栏、页脚等),在 layout 或页面中用{% include %}引入。_sass/与assets/:样式和静态资源。_sass/用于 Sass 预处理,assets/存放编译后的 CSS、JS、图片等。blog.md、publication.md等:独立页面,用于聚合或展示特定内容。_config.yml:全局配置文件,决定站点的基本信息、导航、插件等。_site/:Jekyll 生成的最终静态网站,包含编译后的 HTML、CSS、JS 文件。
整个编译过程可以概括为四步。首先是源文件识别:Jekyll 扫描项目根目录,带有 YAML Front Matter 的文件会被标记为需要处理的动态内容。其次是内容处理:.md 文件先转换为 HTML,再经过 Liquid 模板渲染处理 {% %} 语法,然后根据 Front Matter 套用布局并插入 include 片段。接着是静态资源编译:_sass/ 下的 .scss 编译为 CSS,assets/ 下的图片、字体、JavaScript 复制到 _site/,并完成相对路径到绝对路径的重写。最后是输出生成:所有文件统一输出到 _site/,目录结构按照原始路径与 permalink 规则组织,最终得到可直接部署到任何静态服务器的完整网站。
这种”源码 → 编译 → 静态站点”的工作流程,使得开发者可以专注于内容创作,而将复杂的网站生成逻辑交给 Jekyll 自动处理。
附录
更多信息可以参考官方文档:
Check out the Jekyll docs for more info on how to get the most out of Jekyll. File all bugs/feature requests at Jekyll’s GitHub repo. If you have questions, you can ask them on Jekyll Talk.