Set up Github Pages with Hexo, migrating from Jekyll.

本文介绍用Hexo建立github pages, 其中包含了从Jekyll迁移过来的过程.

Migrate github pages from Jekyll to Hexo.

Set up github pages using Hexo.

不光是迁移哇, 直接用Hexo setup github pages 看这个也有用哇.

为什么要把github pages 从Jekyll实现迁移到Hexo?

前阵子用Jekyll建了github pages(官方推荐), 但是发现添加代码段比较痛苦, markdown的前后三个点并不能标记一个代码块, 需要在代码块前后加上两句特定的语句.

如果一篇文章有很多代码块, 这样一个一个加下来比较费劲, 而且加完了之后代码段的样式也不是很好看.

为此很苦恼的我问了phodal大神, 大神回复: Hexo.

下文记录了我的操作过程.

安装Hexo

必要条件:

Node.js

可以选个pkg,下载后点击安装, 装完之后告诉你路径:

也可以用nvm装的

nvm

Git

这个一般大家都有哒~

上面两个都有之后, 安装Hexo:

$ npm install -g hero-cli

装得也很快.

之后试一下hexo命令,如果有命令介绍(而不是command not found)就代表装好了.

设置和迁移

Setup

备份

首先, 从原先的_posts/目录下将原来的文章都拷贝出来.

另外将.git目录也拷贝出来(这是为了保持github上的历史).

这些文件另外保存.

建立新的目录

在准备好的空目录运行命令:

hexo init .

就建立好了hexo的目录,相关介绍可以去网站看.

npm install 下载依赖包.

Hexo会自动忽略下划线开头的目录和文件名,但是_posts目录除外.

这时候可以运行

$ hexo server

然后访问http://localhost:4000/预览一下.

配置

网站的设置文件是_config.yml

打开可以配置一些新东东, 比如title url之类的.

具体设置参照这个: configuration

内容迁移

这是内容迁移的介绍:

migration

所以首先在_config.yml文件里把 new_post_name字段改为:

new_post_name: :year-:month-:day-:title.md

否则就要修改之前每一个文章的文件名,太麻烦,而且我觉得加个日期也比较好.

然后把原来备份的博客文章移到source/_posts/目录下.

比较bug的是以前jekyll文章里的代码段前后加的那两句还得手动移除.

用Hexo后 前后各加三个` 即可标记代码段.

如果想要代码高亮, 比如是java, 代码段首的```后加个java.

这里可以查看代码高亮的各种语言: highlightjs

完成之后可以运行hexo server 命令在本地看一下样子.

然后把.git目录拷贝回来放在根目录. 可以看到repo地址啊, 历史记录啊还在.

最后提交, 本次提交即为迁移提交, push.

Deployment

部署Deployment

我本来以为跟Jekyll一样本地运行好了, push上去就生效了, 结果并没有.

访问原地址, github pages并不生效,居然还是原来的那个样子.

查了一下是因为deploy没有设置.

打开_config.yml文件,找到deploy字段, 设置一下.

我的是这样写的:

deploy:
type: git
repo: https://github.com/mengdd/mengdd.github.io
branch: master

然后执行一下这条命令:

npm install hexo-deployer-git --save

这条命令执行后package.json会有一条改动, 新添加了一个插件.

把这个提交了.

然后generate和deploy:

$ hexo generate --deploy

$ hexo deploy --generate

这两条命令是一样的.

运行这条命令的时候可能会要求你输入github的账户名和密码(如果你没有配置SSH key的话).

这个需要等待比较长的时间, 实际上最后它是给master分支做了一个git push -f

所以它实际上是不用你自己push的.

之后就可以访问啦: http://mengdd.github.io/

哒哒!

网站代码和静态网页管理

在知乎上看到这个问题: 使用hexo, 如果换了电脑怎么更新博客?

乍一看感觉很奇怪, 换一台电脑难道不是clone下来就行了吗? 仔细看了一下恍然大悟.

前面提到刚刚的部署命令执行了一次强制push, 可是当我们查看github上的repo(https://github.com/mengdd/mengdd.github.io),

发现push上去的文件和我们本地的这些完全不同.

现在在origin master上的全是一些静态html文件.

而我们本地master分支上是一些配置, 还有source文件等.

也就是等于我们把母鸡留在了本地电脑, 执行deploy之后只把鸡蛋push到了origin. (我这个形象的比喻).

那么怎么解决呢? 该问题下排名第一的 [CrazyMilk] 大哥已经给出了答案.

他的博文

所以解决办法就是新建一个分支把网站代码(母鸡)放上去咯

首先在本地, 基于当前本地的master新建一个hexo分支:

git checkout -b hexo

然后push到origin上去:

git push origin hexo

耗时比较久, 请耐心等待.

最后在github的settings页面把hexo分支设置为default.

DONE!

Theme

之后想设置一个好看的主题, 知乎上居然还有这么个问题:

有哪些好看的Hexo主题?

我打算选这个试试: https://github.com/wuchong/jacman

在本地hexo分支根目录下运行:

git clone https://github.com/wuchong/jacman.git themes/jacman

就会clone到themes目录下面叫jacman的目录下.

然后在根目录下的_config.yml中把theme名改为jacman.

然后用命令hexo server就可以在本地查看效果.

改主题大概就酱, 两步就可以完成, 可以多试几个选一选.

选完了在hexo分支提交保存,然后运行hexo d -g生成部署即可.

Future

需要用到的命令: commands 随时查看哇.

Set up Github Pages with Hexo, migrating from Jekyll的更多相关文章

  1. Github Pages和Hexo创建静态博客网站

    Github Pages和Hexo创建静态博客网站 安装Node.js 本人是window环境,所以下载window版. 下载地址:https://nodejs.org/en/download/ 下载 ...

  2. 如何搭建一个独立博客——简明Github Pages与Hexo教程

    摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...

  3. 使用Github Pages和Hexo构建博客

    Github Pages可以创建免费的静态站点,支持自带主题.支持自制页面等,并且可以使用Jekyll或者Hexo等静态博客框架进行管理. 独立博客是博客园等博客平台之外的一个良好补充,相比使用虚拟主 ...

  4. Github Pages 搭建HEXO主题个人博客

    跌跌撞撞,总算是建立起来了.回首走过的这么多坑,也真的是蛮不容易的.那么就写点东西,记录我是怎么搭建的吧. 准备工作 安装Node.js: 用于生成静态页面,我们需要到官网上去下载即可.http:// ...

  5. 使用Github Pages和Hexo构建个人博客

    Github Pages可以创建免费的静态站点,支持自带主题.支持自制页面等,并且可以使用Jekyll或者Hexo等静态博客框架进行管理. 独立博客是博客园等博客平台之外的一个良好补充,相比使用虚拟主 ...

  6. 利用GitHub Pages和Hexo搭建个人博客

    本文首发地址: 非生异也 本项目源码托管在GitHub上 Why 阮一峰曾经说过:喜欢写Blog的人,会经历3个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现 ...

  7. 使用github pages, hexo搭建个人博客教程

    具体的原理性的东西就不说了直接上教程,怕等下自己忘了. 一. github 阶段 申请一个github 账号并成功登录进去. 创建一个名字为xxx.github.io的空项目. 二. hexo 阶段 ...

  8. 基于 Hexo + GitHub Pages 搭建个人博客(二)

    在 基于 Hexo + GitHub Pages 搭建个人博客(一) 这篇文章中,我们已经知道如何使用 Hexo + GitHub Pages 搭建一个个人博客,GitHub 为我们提供了免费的域名和 ...

  9. 基于Hexo+Github Pages搭建的博客

    概念 Github Pages可以被认为是用户编写的.托管在github上的静态网页.使用Github Pages可以为你提供一个免费的服务器,免去了自己搭建服务器和写数据库的麻烦.此外还可以绑定自己 ...

随机推荐

  1. ueditor的配置和使用

    ueditor下载好之后直接复制到项目的WebContent目录下,并将ueditor\jsp\lib下的jar包复制或者剪切到项目的lib目录下.先看一下效果,如下: 1.文件的上传 首先在uedi ...

  2. 浅谈web语义化

    在前端的编程道路上,是否听过html的结构语义化? 是否觉得自己前端嘛,只要做出炫酷的效果,编写出牛逼的JavaScript代码就ok啦.div+css所向无敌,干嘛要用其他标签呢. 是啊,正如上面所 ...

  3. 1Z0-053 争议题目解析707

    1Z0-053 争议题目解析707 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 707.Because of a logical corruption in the EMPLOY ...

  4. 关于《selenium2自动测试实战--基于Python语言》

    关于本书的类型: 首先在我看来技术书分为两类,一类是“思想”,一类是“操作手册”. 对于思想类的书,一般作者有很多年经验积累,这类书需要细读与品位.高手读了会深有体会,豁然开朗.新手读了不止所云,甚至 ...

  5. AppCan学习笔记----Request和登录功能简单实现

    appcan.ajax(options) 实现appcan中网络数据的上传和获取 发起一个ajax请求,并获取相应的内容 常用参数 options.type: 请求的类型,包括GET.POST等 op ...

  6. uploadify上传错误:uncaught exception: call to startUpload failed原因

    这个不是什么tab的问题,而是可能有多个上传的div或者input(含有相同的name或者ID)导致的 如果有两个不同的上传按钮,那么他们的name,id要设置得不一样. <div id='to ...

  7. package.json for npm中依赖外部组件时常用的版本符号含义

    package.json中会有dependencies定义了项目依赖的外部组件,这些外部组件的依赖都是带有版本符号以表示被依赖组件的版本范围. { "dependencies" : ...

  8. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方 ...

  9. MVC学习系列——Filter扩展

    在MVC中,Filter也是可以扩展的.在此,本人对Filter的理解就是AOP,不知道各位大侠,有什么高的见解,呵呵... 首先MVC四大过滤神器IAuthorizationFilter,IActi ...

  10. N皇后问题

    题目描述 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于再n×n的棋盘上放置n个后,任何2个皇后不妨在同一行或同 ...