欢迎来到Jekyll, 本文将带你初步领略Jekyll的风采。
Transform your plain text into static websites and blogs.
Jekyll 是一个简单的静态站点生产器。根据它的规范,我们可以将我们书写的 Markdown (或者 Textile) 以及 Liquid 转化成一个完整的可发布的静态网站,你可以发布在任何你喜爱的服务器上。Jekyll 也可以运行在 GitHub Page 上,也就是说,你可以使用 GitHub 的服务来搭建你的项目页面、博客或者网站,而且是完全免费的。
官方网站:
安装 Jekyll 相当简单,但是你得先做好一些准备工作,开始前你需要确保你在系统里已经有如下配置。
安装好Ruby 和 RubyGems后,你只需要打开终端输入以下命令就可以了:
# Install Jekyll and Bundler through RubyGems
~ $ gem install jekyll bundler
# Create a new Jekyll site at ./myblog
~ $ jekyll new myblog
# Change into your new directory
~ $ cd myblog
# Build the site on the preview server
~/myblog $ bundle exec jekyll serve
# Now browse to http://localhost:4000
Bundler是Ruby的其他gems的管理者。
jekyll new
命令会使用Jekyll minima主题构建一个Jekyll项目,如果你想要构建一个空白的项目,可以使用:
# Create a new blank Jekyll site at ./myblog
~ $ jekyll new myblog --blank
一个Jekyll站点一般会添加一些有用的插件或依赖,这些插件或依赖配置在站点下的Gemfile文件中。
bundle exec
处理Gemfile并管理相关依赖的,如果你的站点是空白的项目,没有什么依赖,可以只执行 jekyll serve
即可。
jekyll serve
会自动执行 jekyll build
命令,如果你不需要启动本地预览,你可以只执行 jekyll build
构建站点静态资源。
Jekyll的官网文档:官方文档, 你也可以将此帮助文档构建到本地。
~ $ gem install jekyll-docs
~ $ jekyll docs
Configuration file: none
Server address: http://127.0.0.1:4000
Server running... press ctrl-c to stop.
如果你想查看jekyll相关命令的用法,你可以执行:
~ $ jekyll help new
~ $ jekyll help build
.
├── _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-metadata
└── index.html # can also be an 'index.md' with valid YAML Frontmatter
上面的目录结构是jekyll项目定义的目录结构,当然不是必须都存在,比如我们创建的blank项目就只有如下目录结构:
.
├── _drafts
├── _layouts
├── _posts
└── index.html
当我们使用 jekyll new myblog
创建项目时,Jekyll 会使用默认的主题帮助我们构建一个项目,目录结构如下:
.
├── _config.yml
├── _posts
| └── 20017-09-24-welcome-to-jekyll.markdown
├── .gitignore
├── 404.html
├── about.md
├── Gemfile
├── Gemfile.lock
└── index.md
构建的项目继承了默认主题的一些目录及文件,所以我们不需要创建任何文件就可以创建具有一定简陋样式的博客系统了。当然,我们是可以覆盖(重写)主题默认的配置,完全随你自己控制的。
关于默认主题,你可以到github上查看:Minima.
那么Jekyll定义的目录都是用来干嘛的呢?
File / Directory | Description |
---|---|
|
存储配置信息,可以通过`site.XX`很方便的读取到配置信息。 |
|
草稿箱,未发布或未写完的文章可以先放置到这里。 |
|
一些共用的模板,如HTML的head部分,可以很方便的被其他文件引用。
|
|
可以定义一些模板框架,如 |
|
文章都放置到这里,这里不要再创建目录,尽管放文件即可,文章的命名遵循如下规则:
|
|
这里你可以放置一些格式化的数据(using either the |
|
These are sass partials that can be imported into your |
|
生成的静态资源文件都放置在这里. It’s probably a good idea to add this
to your |
|
This helps Jekyll keep track of which files have not been modified
since the site was last built, and which files will need to be
regenerated on the next build. This file will not be included in the
generated site. It’s probably a good idea to add this to your
|
|
给这些文件提供 |
Other Files/Folders |
除了上述列举的目录,文件外,如果你有其他文件或目录,Jekyll会自动将他们加载到_site目录下,如 |
Jekyll的配置有很多,但我们用到的不多,默认的基本就够我们使用的了,如果想了解,可以查阅文档。
也可以参照我的博客项目了解_config.yml
配置。
# Welcome to Chinaxiang' personal page!
lang: zh_CN
title: 黄彦祥的个人网站
author: Chinaxiang
email: forkmail@qq.com
description: >
黄彦祥,90后程序猿一枚,热爱分享,喜欢折腾,乐于探索,勇于挑战自我,对新事物充满热情,广交天下有志之士,共谋IT发展大计。
baseurl: ""
url: "http://huangyanxiang.com"
github_username: Chinaxiang
twitter_username: ""
minima:
date_format: "%b %-d, %Y"
timezone: Asia/Shanghai
markdown: kramdown
theme: minima
plugins:
- jekyll-feed
- jekyll-seo-tag
- jekyll-paginate
paginate: 15
paginate_path: "/blog/p:num"
文件头配置是Jekyll很炫酷和方便的一个功能,可以给页面或文章指定文件头配置。你可以给首页指定 _layout/home.html
模板, 你可以给个人简介页面指定固定的地址 permalink: /about.html
.
头文件配置就是在页面,文章的头部添加类似这样的内容:
---
layout: post
title: Blogging Like a Hacker
---
下面的配置可以添加到普通页面或者文章页面。
_layout
中的一个模板,当然也可以不使用模板layout: null
.YYYY-MM-DD HH:MM:SS +/-TTTT
, hours, minutes, seconds, and timezone offset are optional.在上面我们已经接触了一些配置变量,配置完了之后我们怎么使用配置过的变量呢,在这里需要简单的介绍一下。
更多详细的内容请移步官方文档:Jekyll Variables
site.title
page.title
_layout/
目录下的文件的头文件配置,可以在父模板中获取定义的配置,如:layout.desc
可以获取站点级别定义的变量。
_data
目录下的数据集合,如:site.data.githubs
获取_data/githubs.yml
中定义的数据_config.yml
中配置的自定义变量可以获取页面级别定义的变量。
/2008/12/14/my-post.html
/2008/12/14/my-post
['java', 'tool']
nil
如果使用了分页插件,可以获取到分页信息。
分页信息只能在index.html
中读取,比如你可以将分页信息放置到/blog/index.html
.
本文先介绍这么多,避免单篇文章过长,休息片刻,稍后补充如下内容:
本次的分享到此结束,希望对你有所帮助。
如果你对我分享的内容感兴趣,欢迎扫码关注公众号:新质程序猿,并设置星标,推送更实时哟!