Wordpress to hexo 搬家记录

无意中看到了 Hexo,浏览了一下大致的功能,试用了一下后,即刻做出决定:把博客从WordPress 迁移到 Hexo!

花费一两天时间完成整站迁移,但还是有些小问题,记录一下迁移的过程。

综合比较

迁移完全是个人喜好,个人懒得比较这两个博客系统的优劣,其实也不具有比较性,特性完全不一样。

但对于纯写作型博客,Hexo 已经够使用了,WordPress 功能强大,但功能百年不用也就荒废了价值。迁不迁移取决于功能使用。

其实对于我这样的码农来说,仅这两条优点就有100%的理由让我迁移了。

后补一点,迁移后发现 Hexo 的性能一般,对于100多篇文章的 Blog, generate 一下需要20秒种左右,令我感觉有点小不爽。

迁移中遇到不少坑。

使用 hexo-migrator-wordpress 插件“一键搞定”。具体方法见官方教程

1
2
3
4
5
#使用npm安装插件
npm install hexo-migrator-wordpress --save
#(先去Wordprdss导出你的XML文件先),在博客目录执行
hexo migrate wordpress wordpress.xml
#导完之后,插件和xml都可以卸掉了~_~

这个命令一键把 xml 转换成了 _post 文件夹中的 md 文件,使用 hexo generate 将 md 再生成出 HTML 就 OK 了。

当然没有这么轻松的事了,做为一个程序员,迁移肯定会有不兼容,都已经习惯了。Hexo生成的 md 文件并不理想,而且只能导出文章分类

丢失的数据有:标签(应该是 Hexo 的 Bug,XML 里面是有的,并没有生成)、评论上传的图片等文件

由于 Hexo 是一个静态的 Blog 生成工具,评论的数据,肯定是找不回了。但是如果之前的 WordPress 使用了多说之类的评论系统,那么可能还有点救,所幸本站之前有效评论不多(WordPress垃圾评论怎么这么多?),丢了就丢了。

这里只能给出个人建议:手动处理,每篇文章检查一遍。比如在 WordPress 里面,使用了 HighLight 插件高亮了代码,都换成 ```languae 的形式。

其它的问题也很多,丢失的标签,分类等数据,也要在检查的时候依次补回。

兼容性

分类

在 WordPress, 一篇文章是可以有多个分类( Catagroy )的,但在Hexo里面情况有些不一样。

Hexo 只能有一个 Catagroy,如果有定义了两个,会认为第二个是第一个的子分类,比如在WordPress里面给一篇文章定义了两个分类:”分类一”、”分类二”,导在hexo里面可能有两种情况

1
2
3
4

//说明:这种情况会认为分类二是分类一的子分类,文章属于分类二

//说明:这种情况会认为分类一是分类二的子分类,文章属于分类一

hexo这样规类的话,如果原先在WordPress里面很多使用几个分类的情况,那就大大不妙了(你的分类Tab会很乱)~~,解决的办法是重新整理。

评论

Hexo生成出来的页面都是纯静态,所以需要外站的插件去支持评论功能。国内的基本都是用多说:http://duoshuo.com/。WordPress如果原先使用插件那就很好办了,如果使用评论系统就悲剧了,评论没法保留。

###功能性插件
这部份通过后台代码实现的基本都不支持,比如微信服务号,在线商店插件等。

心得

使用个部服务器

做为码农,机器上可能都已经安装了 Ngnix 或者 Apache 之类的服务器,比如个人机器上本身就安装了 Apache,而且设置了开机自动启动。

所以我不想每次都搞个多余的 hexo server 去再启动一个 Http 服务,我写在apache的conf/extra/http-vhosts.conf 里面加个配置就 OK 了。

1
2
3
4
5
6
7
8
9
<Directory "/blog/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "/blog/pulbic"
ServerName mirror.xdnote.com
</VirtualHost>

插件

主题

Github上搜 hexo-theme 可以搜到不少Hexo的主题,点进去看大部分主题也都提供了一个预览的 Demo 地址可以自行挑选。

需要注意的是有不少主题是 Hexo2.5 时代的,目前Hexo的版本是3.0。可能有一些不兼容,目前主题还比较少,不及 WordPress 丰富。而且不可能有一个主题能100%对味, 总是觉得有一些怪怪的,所以如果时间充裕可以自己去改,由于是 Git 版本管理,改起来也相当方便,不像 WordPress 那样复杂。

标签/分类的 别名

在_config.yml里面配置

1
2
3
4
5
6
7
8
category_map:
工具集: tools
技术集: technique
tag_map:
Java: java
JavaScript: js
css: css
html5: html5

迁移问题

本地安装了Hexo后,发现几个问题,而且肯定有些是不能适应理解的,无法接受就暂时不迁。

发布

在文章的头上加

Setting Description Default
layout Layout
title Title
date 发布日期
updated 最后更新日期
comments 是否激活评论功能 true
tags 标签列表
categories 分类列表
permalink 自定义链接 如果不填,就根据文件名生成链接