事情的起源是一时兴起,想把 Octopress 博客的搜索功能从 Google 切换到一个 js 搜索插件,折腾了几个小时,被恶心到了,虽然以前也遇到过类似的问题,这次我是真的忍不了了,花了半个小时把博客迁移到 Hexo.

  不得不说,Octopress 比较适合有时间并且喜欢折腾的人去玩,换上 Hexo 后,感觉之前用 Octopress 简直就是在浪费生命,虽然对静态博客相关的原理和技术有了一些了解,但是我的最终目的是在自己搭建的博客上写字,实在不想被各种恶心的 bug 影响心情。Life is short, we use Hexo.

  说起博客迁移,其实蛮简单的,因为 Octopress 和 Hexo 原理相似,都是生成静态文件,然后把静态文件托管到 GitHub 或者 Coding 上。

准备工作

  • 配置 Git 环境
  • 配置 node.js 环境
  • 注册 GitHub 账号或者 Coding 账号
  • 在 GitHub 或者 Coding 添加 SSH Key

这些是折腾 Hexo 必备的了,不赘述。

安装 Hexo

在 cmd 中输入命令

1
npm install -g hexo-cli

创建 Hexo 博客

选择你要放置博客的位置,例如 E:, 进入 cmd, 输入命令

1
2
3
hexo init <folder>
cd <folder>
npm install

命令执行结束,会产生如下文件

1
2
3
4
5
6
7
8
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes

可以看到,这个目录结构比 Octopress 要简洁很多。

博客迁移

迁移过程很简单,把以前 Octopress 的 source/_post 目录下的文章,全部拷贝到 Hexo 的同名目录下就可以了,以前的图片目录,也可以直接拷贝到 source/images 目录下。

关于配置

其实和 Octopress 比较类似,修改根目录下的 _config.yml 文件中的参数实现全局配置;修改 themes 目录下某个主题的 _config.yml 文件中的参数实现主题的定制,同样,主题的样式也是在对应的主题目录下去找到样式文件进行修改。

博客管理

发布博客

进入博客目录,在 cmd 输入命令

1
hexo new [post] "title"

这条命令会在你的博客目录的 source/_posts 下生成一个 :year-:month-:day-:title.markdown 的文件,这个文件名可以在 根目录下的 _config.yml 文件中配置 new_post_name 来修改。然后用编辑器打开就可以编辑文章了。

生成、预览和部署博客

文章编辑好之后,运行生成、预览和部署命令

1
hexo g // 生成

生成之后,可以先在本地进行预览

1
hexo s // 运行服务器

最后进行部署

1
hexo d // 部署

预览不是必须的,这些步骤可以合并,例如

1
2
hexo s -g // 生成和预览
hexo d -g // 生成和部署

上述其实是 Hexo 提供的简化命令,对应于

1
2
3
hexo g = hexo generate // 生成
hexo d = hexo deploy // 部署
hexo s = hexo server // 运行服务器

博客托管

前提是按照要求在 GitHub 或者 Coding 建立了相应的 Pages 项目,添加了 SSH Key, 然后修改根目录下的 _config.yml 文件中的参数

1
2
3
4
5
6
7
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo:
github: [email protected]:username/username.github.io.git,master
coding: [email protected]:username/username.git,coding-pages

就可以在部署的时候将 Hexo 博客静态文件同时托管在 GitHub 和 Coding 上了。

后记

上手 Hexo 后,感觉比 Octopress 效率高很多,主题好看,可定制性强,修改起来也方便,最重要的是 Octopress 基于 ruby,而 Hexo 基于 node.js, 感觉后者在生成/部署的时候快了很多。

暂时就折腾这么多 ¬_¬