Posts Jekyll探索
Post
Cancel

Jekyll探索

边使用,边学习,边记录

Jekyll是什么

jekyll是一个简单的免费的Blog生成工具,类似WordPress。但是和WordPress又有很大的不同,原因是jekyll只是一个生成静态网页的工具,不需要数据库支持(百度百科: Jekyll)

可以把它理解为一个文本转换引擎,通过实现代码的复用减轻建站和维护的负担

目录结构

每一个Jekyll Project的所有文件都存于根目录下,一般根目录的结构如下

  • .jekyll-cache
  • _includes
  • _layouts
  • _posts
  • _sass
  • _site
    • assets
    • index.html
  • assets
  • _config.yml
  • index.md(index.html)
目录说明
.jekyll-cache缓存文件夹,用于判断内容是否更新
_includesinclude引用的文件
_layouts作为模版的html,是网页设计的核心部分
_posts博客文章的markdown文件,博客内容的主体
_sassscss文件,储存样式
_sitebuild得到的文件,是jekyll根据其他内容生成的完整的网页文件夹,可以直接用于一般web服务器
assets资源文件,build时会原样迁移至_site/assets中
_config.yml网站的配置文件,设置诸多属性

开发常用命令

命令功能
jekyll serve启动服务端(localhost:4000)
jekyll build生成目标文件

文件的相互引用

继承:_Layout文件可以在文件头的front matter中的layout部分选择其他的_Layout文件(类似于OOP中的继承关系),“选择继承”的文件内容会被作为content的替换内容加入到“被继承”的文件中。

引用:include可以引用另一个文件的全部内容,这类似于C语言中引用头文件的include,但它可以像宏展开一样将被include的文件内容引用到文章的任何一处。

生成:这里的生成指的是生成_site文件夹中的页面,一般情况下_layout中的文件被根目录/_posts中的html/markdown文件调用,在完成“继承”和“引用”、填充content之后,即可生成目标页面。

“继承”和“引用”的区别在于包含与被包含。“继承”操作意味着将当前的文件嵌入到另一个文件的指定位置,所以“继承”的对象往往是一个框架;“引用”操作则意味着将另一个文件的内容嵌入到这个文件的指定位置,所以“引用”的对象往往是一个组件。“生成”过程就是把最终得到的框架“继承”的过程,可以把“生成”当做特殊的“继承”。

常用变量

对于每一个具有YAML头文件(front matter)的文件,Jekyll 都会通过 Liquid 模板工具来生成一系列的数据,数据的作用域分为全局(global)、全站(site)、当前页(page)三种,具体内容见常用变量

依赖关系(updated in 2020-07-22)

下载到jekyll主题后, 直接进行jekyll serve或者jekyll build大概率会报错, 是因为jekyll项目通常要依赖于一些包, 如果直接进行build, 会报无法找到组件的错

jekyll使用bundler管理依赖关系, 依赖关系写在Gemfile里面

查看文件内容的一个示例:

1
2
3
4
5
6
7
source "https://gems.ruby-china.com"

gem 'jekyll'
gem "jekyll-sitemap"
gem 'html-proofer'
gem 'tzinfo'
gem 'tzinfo-data'

文件中标明了依赖包, 下载到国外的jekyll主题的时候, 通常要换源, 不然在安装依赖的时候会出现网络问题

使用bundle install安装Gemfile中的依赖, 会生成Gemfile.lock文件

查看文件内容的一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
GEM
  remote: https://gems.ruby-china.com/
  specs:
    addressable (2.7.0)
      public_suffix (>= 2.0.2, < 5.0)
    colorator (1.1.0)
    concurrent-ruby (1.1.6)
    em-websocket (0.5.1)
    (此处省略很多很多包....)
      concurrent-ruby (~> 1.0)
    tzinfo-data (1.2020.1)
      tzinfo (>= 1.0.0)
    unicode-display_width (1.7.0)
    yell (2.2.2)

PLATFORMS
  ruby

DEPENDENCIES
  html-proofer
  jekyll
  jekyll-sitemap
  tzinfo
  tzinfo-data

BUNDLED WITH
   2.1.4

Gemfile.lock文件是在bundle install的时候自动生成的, 里面包含了”依赖的依赖”, 也标明了版本, 确保所有依赖都能正确稳定地工作

在安装完毕依赖之后, 就可以正常地build或者serve

This post is licensed under CC BY 4.0 by the author.

Getting Started

YAML基础语法