无意中看到了 Hexo,浏览了一下大致的功能,试用了一下后,即刻做出决定:把博客从WordPress 迁移到 Hexo!
花费一两天时间完成整站迁移,但还是有些小问题,记录一下迁移的过程。
综合比较
迁移完全是个人喜好,个人懒得比较这两个博客系统的优劣,其实也不具有比较性,特性完全不一样。
但对于纯写作型博客,Hexo 已经够使用了,WordPress 功能强大,但功能百年不用也就荒废了价值。迁不迁移取决于功能使用。
WordPress - 优点
- 功能强大:标准的 Blog。很容易通过插件扩展为 CMS、商城、企业门户 等。
- 资源丰富:即有官方的皮肤、插件库,又可以去其它地方下载
- 安装方便:上传,Mysql 连接即可,基本所有主机商都内置 WordPress 支持一键安装,小白都会。
- 操作简单:标准的发表文章体验,只要你用过任何平台,如QQ空间,论坛或其它之类的,都能很快熟悉 WordPress 的操作
- 插件强大:插件库几十万的插件虽然只是说说,但精品插件总会有1000款以上吧。普通博客用了十多款就够了。
- 移动支持:Android ,IOS 版本,虽然不会去手机上写做,但管理还是挺方便的。
Hexo -优点
- 静态发布:编译成静态 HTML,打开速度肯定比 php 快。 另外可以使用一些免费的如 Github Page 服务来托管,主机不用花钱,做个域名映射就行。
- Markdown本地写作:虽然 WordPress 也支持 MarkDown 语法,但肯定没有用自己的离线编辑器用起来爽吧。
其实对于我这样的码农来说,仅这两条优点就有100%的理由让我迁移了。
后补一点,迁移后发现 Hexo 的性能一般,对于100多篇文章的 Blog, generate 一下需要20秒种左右,令我感觉有点小不爽。
迁移中遇到不少坑。
使用 hexo-migrator-wordpress
插件“一键搞定”。具体方法见官方教程
#使用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里面有两种情况
//说明:这种情况会认为分类二是分类一的子分类,文章属于分类二
//说明:这种情况会认为分类一是分类二的子分类,文章属于分类一
hexo这样规类的话,如果原先在WordPress里面很多使用几个分类的情况,那就大大不妙了(你的分类Tab会很乱)~~,解决的办法是重新整理。
评论
Hexo生成出来的页面都是纯静态,所以需要外站的插件去支持评论功能。国内的基本都是用多说:http://duoshuo.com/。WordPress如果原先使用插件那就很好办了,如果使用评论系统就悲剧了,评论没法保留。
###功能性插件
这部份通过后台代码实现的基本都不支持,比如微信服务号,在线商店插件等。
心得
使用个部服务器
做为码农,机器上都已经安装了 Ngnix 或者 Apache 之类的服务器,比如个人机器上本身就安装了 Apache,而且设置了开机自动启动。
所以我不想每次都搞个多余的 hexo server
去再启动一个 Http 服务,我写在apache的conf/extra/http-vhosts.conf 里面加个配置就 OK 了。
<Directory "/blog/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "/blog/pulbic"
ServerName mirror.xdnote.com
</VirtualHost>
插件
- hexo-html-minifier https://github.com/hexojs/hexo-html-minifier
HTML压缩插件 - hexo-uglify https://github.com/hexojs/hexo-uglify
JavaScript压缩插件 - hexo-clean-css https://github.com/hexojs/hexo-clean-css
css压缩插件 - hexo-renderer-marked https://github.com/hexojs/hexo-renderer-marked
Markdown extra 支持插件 这个是默认安装的 - hexo-renderer-markdown-it https://github.com/celsomiranda/hexo-renderer-markdown-it
也是一个markdown支持插件,和marked冲突,只支持hexo3.0以上,与marked二者选一,建议选择这个,和GITHUB相似 - hexo-notify https://github.com/hexojs/hexo-notify
消息通知插件,不知道有什么用,先记录一下 - FTP deployer https://github.com/hexojs/hexo-deployer-ftpsync
支持使用FTP发布的插件 - hexo-generator-feed https://github.com/hexojs/hexo-generator-feed
生成rss插件 很多皮肤中默认一个atom.xml的订阅链接就是这个了 - hexo-generator-sitemap https://github.com/hexojs/hexo-generator-sitemap
生成sitmap的插件,有了这个每次编译时会生成一个sitemap.xml - hexo-renderer-ejs https://github.com/hexojs/hexo-renderer-ejs
基本上是必须的 - hexo-migrator-wordpress https://github.com/hexojs/hexo-migrator-wordpress
由于我是从wordpress转过来的,就要装个插件这个导数据
主题
Github上搜 hexo-theme
可以搜到不少Hexo的主题,点进去看大部分主题也都提供了一个预览的 Demo 地址可以自行挑选。
需要注意的是有不少主题是 Hexo2.5 时代的,目前Hexo的版本是3.0。有一些不兼容,目前主题还比较少,不及 WordPress 丰富。而且不会有一个主题能100%匹配, 总是觉得有一些怪怪的,所以如果时间充裕可以自己去改,由于是 Git 版本管理,改起来也相当方便,不像 WordPress 那样复杂。
标签/分类的 别名
在_config.yml里面配置
category_map:
工具集: tools
技术集: technique
tag_map:
Java: java
JavaScript: js
css: css
html5: html5
迁移问题
本地安装了Hexo后,发现几个问题,而且肯定有些是不能适应理解的,无法接受就暂时不迁。
在 Wordpress 里面的自定义链接与Hexo的规则不兼容,数据丢失
如果想要保留以前的链接,需要把所有文件我文件名改为你以前自定义的链接名字,然后设置 permalinks 规范为文件名
Tag 虽然有导出到 xml 文件里面,但 hexo 没有引入
不知道是不是导入插件原因,因为导入后很多文章都要重新审阅,也就顺便重新规范下 Tags 吧
Category 不兼容
如果原先有多个 Category 只有忍痛去掉了,也好重新规范下
图片资源文件问题
我是在 source 目录建立自己的资源目录如 images,把图片放到此目录里面,插入图片时链接写绝对路径如 images/xxx.png
以前在wordpress的高亮插件生成的代码块有问题
我用的是插件把以前的
<pre class="brush:java"></pre>
改为 ```形式
发布
在文章的头上加
Setting | Description | Default |
---|---|---|
layout | Layout | |
title | Title | |
date | 发布日期 | |
updated | 最后更新日期 | |
comments | 是否激活评论功能 | true |
tags | 标签列表 | |
categories | 分类列表 | |
permalink | 自定义链接 | 如果不填,就根据文件名生成链接 |