Github Pages 和 Jekyll的使用
简介
Git简介
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 GitHub可以托管各种git库的站点。
Github Pages
一个在github上托管的免费的静态页面运行空间,支持HTML和MarkDown类型的静态文件。
优点:
- 搭建简单而且免费;
- 支持静态脚本;
- 可以绑定你的域名;
- DIY自由发挥,支持模版,支持jekll,支持markdown,支持引入第三方评论组件,支持更换主题,支持自定义主题。
- 理想写博环境,git+github+markdown+jekyll;
- 使用git做版本管理。
Github pages 可以通过只提交静态HTML、CSS、JS等资源,也可以通过使用自带的Jekyll引擎,来加工提交的文件。
两种pages模式
-
User/Organization Pages 个人或公司站点
1) 使用自己的用户名,每个用户名下面只能建立一个; 2) 资源命名必须符合这样的规则username/username.github.io; 3) 主干上内容被用来构建和发布页面
-
Project Pages 项目站点
1) gh-pages分支用于构建和发布; 2) 如果user/org pages使用了独立域名,那么托管在账户下的所有project pages将使用相同的域名进行重定向,除非project pages使用了自己的独立域名; 3) 如果没有使用独立域名,project pages将通过子路径的形式提供服务username.github.io/projectname; 4) 自定义404页面只能在独立域名下使用,否则会使用User Pages 404;
可以通过User/Organization Pages建立主站,而通过Project Pages挂载二级应用页面。
Jekyll
Jekyll是一种简单的、适用于博客的、静态网站生成引擎。它使用一个模板目录作为网站布局的基础框架,支持Markdown、Textile等标记语言的解析,提供了模板、变量、插件等功能,最终生成一个完整的静态Web站点。说白了就是,只要安装Jekyll的规范和结构,不用写html,就可以生成网站。 参考: jekyll介绍 jekyll on github jekyllbootstrap
Jekyll使用Liquid模板语言,\{\{page.title\}\}
表示文章标题,\{\{content\}\}
表示文章内容。我们可以用两种Liquid标记语言:输出标记(output markup)和标签标记 (tag markup)。输出标记会输出文本(如果被引用的变量存在),而标签标记不会。输出标记是用双花括号分隔,而标签标记是用花括号-百分号对分隔。
参考:
Liquid模板语言
Liquid模板变量参考
jekyll与github的关系:GitHub Pages一个由 GitHub 提供的用于托管项目主页或博客的服务,jekyll是后台所运行的引擎。
使用
安装git工具
git工具非常多,安装和使用教程也非常多,这里略过不写。
创建个人站点步骤
参考: 原通过GitHub Pages建立个人站点(详细步骤)- 雨知
使用Jekyll
Jekyll 可以搭建本地Jekyll环境,也可以直接下载一套模版,手动修改,提交github查看效果。
Jekll本地环境搭建
参考: Jekyll中国
Jekyll 模版库
poole/poole · GitHub Jekyll Themes
实战
站点维护软件:
- 使用本地MarkDown编辑器(马克飞象)+[notepad++] 编写文章。
- 使用notepad++修改模版
- 使用soucetree管理github库。
下载xixia西夏模版,将模版所有内容覆盖到站点库。将本地内容推送到github,访问http://username
.github.io即可。
文章发布流程:
- 在马克飞象中写好文章。
- 导出为Markdown格式的zip包。
- 将zip包中文件markdown文件解压到站点在本地的
_post
目录. - 将zip包中图片解压到站点的
assets\images
目录下。 - 用notepad++打开导出的markdown文件,修改替换
(./
为(/assets/images/
- 删除一些无法识别的markdown语句,比如
(@)
、[toc]
。 - 替换[
toc]
为:
* TOC
{:toc}
xixia 模版介绍
目录结构
参考: 目录结构
_config.yml
保存配置数据。很多配置选项都可以直接在命令行中进行设置,但是如果你把那些配置写在这儿,你就不用非要去记住那些命令了。 系统的默认值如下:
# 目录结构
source: .
destination: ./_site
plugins: ./_plugins
layouts: ./_layouts
data_source: ./_data
collections: null
# 阅读处理
safe: false
include: [".htaccess"]
exclude: []
keep_files: [".git", ".svn"]
encoding: "utf-8"
markdown_ext: "markdown,mkdown,mkdn,mkd,md"
# 内容过滤
show_drafts: null
limit_posts: 0
future: true
unpublished: false
# 插件
whitelist: []
gems: []
# 转换
markdown: kramdown
highlighter: rouge
lsi: false
excerpt_separator: "\n\n"
incremental: false
# 服务器选项
detach: false
port: 4000
host: 127.0.0.1
baseurl: "" # does not include hostname
# 输出
permalink: date
paginate_path: /page:num
timezone: null
quiet: false
defaults: []
# Markdown 处理器
rdiscount:
extensions: []
redcarpet:
extensions: []
kramdown:
auto_ids: true
footnote_nr: 1
entity_output: as_char
toc_levels: 1..6
smart_quotes: lsquo,rsquo,ldquo,rdquo
enable_coderay: false
coderay:
coderay_wrap: div
coderay_line_numbers: inline
coderay_line_number_start: 1
coderay_tab_width: 4
coderay_bold_every: 10
coderay_css: style
可以增加自己自定义配置
新增Category 和tag
Category 和tag可以在文章的头代码块中指定,值可以是多个,也可以是单个。Jekyll将自动处理相同的category和tag无需手动设置规定的值列表。
---
layout: post
title: "Webpack2"
categories: ['web front end','webpack']
tags: ['webpack','source-map','javascript']
author: Feiyizhan
description: webpack的使用2.
---
切换布局
在访问的html活动markdown文件顶部可以增加YAML代码块,用于控制该页面使用什么样的布局,指定的布局值必须是_layouts
下的具体的文件的basename。例如xixia这个模版自带了两个布局default.html
和post.html
代码块如下:
---
layout: default
---
...
头信息 正是头信息开始让 Jekyll 变的很酷。任何只要包含 YAML 头信息的文件在 Jekyll 中都能被当做一个特殊的文件来处理。头信息必须在文件的开始部分,并且需要按照 YAML 的格式写在两行三虚线之间。
语言控制
由_config.yml
中的lan: "cn"
控制使用何种语言。
目前支持的值有en
、cn
。对应的资源文件:
en
- C:\github\Feiyizhan.github.io\_data\values\en.yml
cn
- C:\github\Feiyizhan.github.io\_data\values\cn.yml
cn
资源文件内容:
recent_posts: 最新发表
links: 友情链接
home: 首页
tags: 标签
archive: 归档
categories: 分类
about: 关于
thanks: " , 自豪的采用"
page: 当前页
newer_post: 前一篇
older_post: 后一篇
top_posts: 置顶文章
实现代码在header.html
和sidebar.html
:
<!-- 定义trans 变量,取值为加载的data.values里的lan的值对应的内容。-->
<!--之后在需要的地方使用trans对象的属性值。-->
markdown增加目录索引
markdown标签为
* TOC
{:toc}
_config.yml
配置文件内容:
highlighter: rouge
markdown: kramdown
kramdown:
input: GFM
extensions:
- autolink
- footnotes
- smart
enable_coderay: true
syntax_highlighter: rouge
分页
_config.yml
配置文件内容:
paginate: 10