0%

Octopress 迁移 Hexo 经验总结

一、迁移过程

迁移过程网上有很多现成的文章,这里主要参考巧叔的 从 Octopress 迁移到 Hexo

安装 Hexo

先使用以下命令安装 Hexo:

1
$ npm install hexo-cli -g

创建新的博客目录

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

迁移配置

  • 迁移文章

把以前 Octopress 的 source/_post 目录下的文章,拷贝到 Hexo 的同名目录下即可。

  • 迁移图片资源

以前的图片目录,也可以直接拷贝到 source/images 目录下。

  • 修改 _config.yml 文件

上一步生成的 Hexo 目录里,_config.yml 都是默认值,可以根据自己需要修改。

提交到远端仓库

  • clone Octopress source 仓库到本地

远程仓库还是使用原来 github 和 gitcafe 上的仓库,所以我的做法是将原来 github 上的 source 分支仓库 clone 到本地:

1
$ git clone -b source git@github.com:username/username.github.com.git hexo
  • 将 hexo 目录里的文件都删除,当然除了 .git 目录外;

  • 目录里生成的东西全部拷贝到 hexo 目录;

  • 强制推送到远端 git push origin source -f

到这里 Hexo 博客的 source 部分迁移完成,接下来就可以生成博客了。

二、生成博客

生成博客很简单,执行以下命令即可:

1
2
$ hexo clean
$ hexo generate

generate 命令会创建一个 public 目录(前面的 clean 命令会先删除这个目录,如果有),这个目录是实际的博客目录。

为了方便操作,生成博客并提交写了个 deploy 脚本:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#! /bin/zsh

# git pull source
echo "**************BEGIN GIT PULL SOURCE**************"
git pull origin source

if [ $? != 0 ]
then
echo "**************GIT PULL SOURCE FAILED**************"
exit 1
else
echo "**************GIT PULL SOURCE SUCCESS**************"
fi


# hexo generate
echo "**************BEGIN HEXO GENERATE**************"
hexo clean
hexo generate

if [ $? != 0 ]
then
echo "**************HEXO GENERATE FAILED**************"
exit 1
else
echo "**************HEXO GENERATE SUCCESS**************"
fi


# git push source
echo "**************GIT PUSH BEGIN**************"
git add --all .
git commit -m "update at `date` "
git push origin source
if [ $? != 0 ]
then
echo "**************GIT PUSH FAILED**************"
exit 1
else
echo "**************GIT PUSH SUCCESS**************"
fi


# 创建发布用 git 仓库
cd public
git init
git add .
git commit -m "update at `date` "

# 添加 coding.net 源
echo "**************PUSH TO CODING.NET BEGIN**************"
# 改变 coding.net remote url
git remote add coding git@git.coding.net:foogry/foogry.git >> /dev/null 2>&1
# 提交博客内容
git push -u coding master:coding-pages -f

if [ $? != 0 ]
then
echo "**************PUSH TO CODING.NET FAILED**************"
exit 1
else
echo "**************PUSH TO CODING.NET SUCCESS**************"
fi

# 添加 github 源
echo "**************PUSH TO GITHUB BEGIN**************"
# 改变 github remote url
git remote add origin git@github.com:wangzz/wangzz.github.com.git >> /dev/null 2>&1
# 提交博客内容
git push origin master -f

if [ $? != 0 ]
then
echo "**************PUSH TO GITHUB FAILED**************"
exit 1
else
echo "**************PUSH TO GITHUB SUCCESS**************"
fi

cd -

echo "**************DONE**************"

我把这个脚本放在了博客 souce 的根目录下每次修改完 source 后,执行一次,博客就能更新了。

三、写新博客

使用下述命令可以生成一个新的 markdown 文件:

1
$ hexo new "文章标题"

写完文章后执行前面的 deploy 脚本就行了。

四、next 主题

看了不少 Hexo 的主题,发现还是比较喜欢简洁的 next,目前在用其中的 Pisces。关于 next 主题的一些配置方式如下:

安装

其实就是将 next clone 到主题目录:

1
$ git clone git@github.com:iissnan/hexo-theme-next.git themes/next

然后修改 Hexo 根目录下的 _config.yml 文件,将其中的主题设置成 next 即可:

1
2
3
4
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next

自定义 next

next 主题本身提供了比较高的自定义能力,具体配置文件为 themes/next/_config.yml ,可以根据个人喜好修改。

增加 About 界面

  • 创建新的 About 界面:
1
$ hexo new page "about"
  • 自定义新生成的 about.md 文件

  • 修改 themes/next/_config.yml 文件,打开其中的 about 配置

1
2
3
4
5
6
7
8
9
menu:
home: / || home
#tags: /tags/ || tags
#categories: /categories/ || th
archives: /archives/ || archive
#schedule: /schedule/ || calendar
#sitemap: /sitemap.xml || sitemap
#commonweal: /404/ || heartbeat
about: /about/ || user

添加谷歌广告

将谷歌的广告脚本放到 themes/next/layout/partials/head/head.swig 中的任意一个位置即可

添加百度统计

将百度统计的 AppKey 放到 themes/next/_confing.xml 对应的配置中即可:

1
2
# Baidu Analytics
baidu_analytics: your appkey

五、在新电脑上配置已经存在的 Hexo 博客

安装 Hexo

如果没安装过 Hexo,跟新建博客一样要先安装 :

1
2
$ npm install hexo-cli -g
$ npm install hexo --save

clone Hexo source 到本地

1
$ git clone -b source git@github.com:wangzz/wangzz.github.com.git hexo

部署博客

进入到 hexo 的 source 目录,执行 deploy 脚本即可。

SSH key

clone source 或提交博客到 github 或 gitcafe 前,需要将将当前电脑上的 SSH key 填到 github 或 gitcafe 上,具体操作方式见之前的文章 《让Octopress博客在多台Mac上同时使用》

参考文档