折腾了半天,Jeklly终于正常跑起来了,总结下一些注意事项,更多用法还需参考官网文档(https://www.jekyll.com.cn/docs/home/)

建议直接根据源码学习,多动手试一试。

安装 & 自动部署

需要先安装好rubygem,ruby的版本最好大于2.4,一般安装好了ruby,gem页自动安装好了

当Ruby安装完成之后,再安装jekyll

~ $ gem install jekyll
~ $ jekyll -version

~ $ jekyll new my-site
~ $ cd my-site
~/my-site $ bundle install --without test
~/my-site $ jekyll serve

自动部署可以直接看参考项目里面的.travis.yml文件和script/deploy.sh文件里面的内容。

一般直接拷贝就行了,记得把script/deploy.sh里面的git config user.email "xxx"改成自己的,其他不需要做太多修改。

文件结构

├── _config.yml
├── _includes
|   ├── footer.html
|   └── header.html
├── _layouts
|   ├── default.html
|   └── post.html
├── _posts
|   ├── 2007-10-29-why-every-programmer-should-play-nethack.textile
|   └── 2009-04-26-barcamp-boston-4-roundup.textile
├── _site
├── Gemfile
├── scripts
|   ├── build.sh
|   └── depoly.sh
└── index.md

_config.yml

相当于一个配置文件,在整个网站全局可用。在开发调试的阶段,如果对这个文件进行了修改,需要重启jekyll serve

_includes

存放类似页面组件,例如:导航栏,底栏。总之,一切能复用的页面设计都可以放这里。

layouts

包裹在文章外部的网页模板

_posts

存放自己的博客文件。文件名必须是年-月-日-标题.xxx,文件名后缀可以使htmlmdtextfile

_site

存放构建完成之后的的页面(默认)。最好将这个目录放进.gitignore文件中。

Gemfile

依赖文件,当执行bundle install的时候,就根据这个文件安装对应的依赖。

写博客

写博客十分容易,只要去_posts文件加下创建一个年-月-日-标题.xxx文件,在文件的开头进行一些设置

---
# 页面的格式类型,post表示博客页面的格式
layout: post
# 博客标题
title: Jeklly使用心得总结
# 博客副标题
description: (更新中...).
# 博客URL地址,和文件名对应
path: _posts/2018-12-22-jeklly.md
# 给博客打一些tag标签,便于后面的检索分类
tags: [skills,jeklly]
---

如果是md格式的文件,下面就可以按照md格式写东西了,jeklly会自动把md格式转化为html格式。

增加一个栏目

加入想要增加一个“读书”栏目,并且在导航栏上显示,也十分容易实现。现在根目录下创建books文件夹,在文件夹里面创建一个index.md文件和_posts文件夹。

├── books
|   ├── _posts
|   └── index.md
└── index.md

index.md文件里面增加下面的内容

---
layout: page
# 将显示在导航栏上
title: 读书
categories: ['read']
# 这样就可以在 http://localhost:4000/read/里面看到了
permalink: /read/
---

因为这也是一个md文件,也可以在下面写一些内容,作为“读书”页面的首页内容

分页功能

如果博客比较多,一个页面全部显示不太美观,可以分页显示。

这里就要用到jekyll-paginate-v2插件。建议直接从这个项目拷贝修改。

下面说下主要的修改。

首先是Gemfile增加下面的插件

group :jekyll_plugins do
  gem "jekyll-paginate-v2"
end

_config.yml增加下面的内容

# theme: jekyll-theme-cayman
plugins:
  - jekyll-paginate-v2

plugins_dir:
  - jekyll-paginate-v2

# Produces a cleaner folder structure when using categories
permalink: /:year/:month/:title.html

# Pagination Settings
pagination:
  enabled: true
  per_page: 8
  offset: 0
  permalink: '/page/:num/'
  title: ':title - page :num of :max'
  limit: 0
  sort_field: 'date'
  sort_reverse: true

然后再index.md里面允许分页功能

---
layout: home
pagination:
    enabled: true
---

重启服务就可以看到分页功能了

参考

  • 常用变量。https://www.jekyll.com.cn/docs/variables/
  • 目录结构。https://www.jekyll.com.cn/docs/structure/
  • 撰写博客。https://www.jekyll.com.cn/docs/posts/
  • 分页插件jekyll-paginate-v2。https://github.com/sverrirs/jekyll-paginate-v2