从Hexo迁移到Hugo最强攻略
时间:2019-10-24 21:00:05
作者:重庆seo小潘
来源:互联网
从Hexo迁移到Hugo最强攻略 自从Hugo出来后,作为Go语言(golang)的重度用户的重度用户,一直想把自己的博客迁移到Hugo,但是一直没有行动,主要原因在于,我的博客使用的一款主题maupassant非常简洁、响应速度快,但是在Hugo上并没有类似一的主题,再加上从
从Hexo迁移到Hugo最强攻略
自从Hugo出来后,作为Go语言(golang)的重度用户的重度用户,一直想把自己的博客迁移到Hugo,但是一直没有行动,主要原因在于,我的博客使用的一款主题maupassant非常简洁、响应速度快,但是在Hugo上并没有类似一的主题,再加上从Hexo迁移到Hugo还有好多要修改的,所以一直迟迟没有行动。
Hugo的maupassant主题
前段时间在Github上闲逛,竟然发现了有人基于Hugo制作了maupassant主题,就clone下来看了一下,发现的确实现了maupassant主题的大部分功能,可以用,但是也存在很多问题。
比如:
不支持最近文章,我现在的Hexo的maupassant主题是支持的。
分类不支持文章数量的显示。
不支持标签云
RSS支持,但是不能自动被发现。
有菜单,但是不是Hugo的菜单功能,灵活性不足。
不支持友情链接。
没有文档归档功能。
GA统计分析不支持。
没有代码高亮。
其他小细节还有很多,这里就不一一列举了,总之,如果按这个模板进行迁移,那么我的博客网站原来的很多功能都没有了,这是我不能接受的。
完善Hugo的maupassant主题
既然很多功能都不支持,而且我又想迁移到Hugo(可以利用go语言的知识,NodeJS不太熟),所以就自定动手参照着我原来博客的功能模板进行完善。原来的maupassant主题作者已经7个多月没有维护了。
因为太忙,断断续续改了好久(一个多月吧),进行了扩展,增加了很多功能,并且用自己的博客做了实验,基本上已经满足我所需的大部分功能,具体效果可以参加 http://www.hkxiaopan.com/ 。
飞雪无情版本的Hugo maupassant 主题开源。
完善了maupassant主题后,我决定进行开源,主要原因有以下几点:
原maupassant主题有很多缺陷和功能缺失
原作者最近7个多月没有更新,而且没有详细的使用文档。
相信还有很多和我一样的人,想用Hugo的这款maupassant主题。
和更多的朋友一起完善该主题。
基于此,所以我fork了原来的maupassant主题,把我修改的提交了上去,形成了新的flysnow hugo maupassant theme。
新的Hugo maupassant 主题主要有以下特性支持
最近发表的文章支持,显示最近的10篇
分类支持,并且可以显示分类内的文章数量
标签云支持
一键回到页面顶部
RSS支持,并且可以自动发现RSS
自定义菜单支持,不限个数,自定义排序
自定义友情链接支持
支持文章按年份日期进行归档
支持GA分析统计
Sitemap站点地图
支持关键字SEO优化
代码高亮
Google站内搜索
当然还有很多特性不支持,比如百度分析、文章阅读数统计,评论等,后面会继续完善。
什么是Hugo
引用一下Hugo官网的描述
The world’s fastest framework for building websites.
Hugo是一个非常受欢迎的、开源的静态网站生成工具,和Hexo类似。它速度快,扩展性强。
更多的关于Hugo的介绍,请参考Hugo的官网 https://gohugo.io/ 。
Hugo的安装和使用。
Hugo比Hexo速度更快,而且不用依赖一大堆东西,一个二进制文件就可以搞定。
Github下载
我们可以直接从Github Release页面下载对应的二进制文件,然后把它放在你的PATH目录里即可使用。这个支持任何平台,根据自己的平台选择相应的二进制包即可。
Mac平台下
Mac下Hugo提供了homebrew安装的方式,非常简便。
brew install hugo
Debian and Ubuntu平台下
sudo apt-get install hugo
Windows平台下
Windows下Hugo提供了Chocolatey方式的安装,通过如下命令即可。
choco install hugo -confirm
验证安装
安转完成后,我们打开终端,输入如下命令进行验证是否安装成功hugo version
如果没问题的话,会输出Hugo的版本号等一些信息。
创建一个站点
hugo new site blog
添加一个主题
cd blog;\
git init;\
git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke;\# Edit your config.toml configuration file
# and add the Ananke theme.
echo 'theme = "ananke"' >> config.toml
添加一篇文章
hugo new posts/my-first-post.md
运行查看效果
hugo server -D
然后我们就可以打开浏览器,输入http://localhost:1313查看我们新创建的站点了。
本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站http://www.hkxiaopan.com/,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。
使用新的Hugo maupassant主题
最新版本的Hugo maupassant主题我已经在Github上开源,大家可以clone使用。使用很简单,只需要以下两步即可。
cd <YOUR Bolg Root Dir>
git clone https://github.com/rujews/maupassant-hugo themes/maupassant然后在Hugo的配置文件里config.toml(yaml,json)中进行如下配置,即可使用。
theme = "maupassant"
记得把你的MD文章放在content/post目录下。
Hugo maupassant 主题配置
Hugo maupassant 主题配置也不难,是否熟悉Hugo都可以快速配置,并生成自己的网站。
我博客的配置如下,大家可以参考。
config.toml
baseURL = "http://www.hkxiaopan.com"
languageCode = "zh-CN"
title = "飞雪无情的博客"
theme = "maupassant"
[author]
name = "飞雪无情"
[params]
author = "飞雪无情"
subtitle = "专注于Android、Java、Go语言(golang)、移动互联网、项目管理、软件架构"keywords = "golang,go语言,go语言笔记,飞雪无情,java,android,博客,项目管理,python,软件架构,公众号,小程序"description = "专注于IT互联网,包括但不限于Go语言(golang)、Java、Android、Python、项目管理、抖音分析、软件架构等"Hugo maupassant 自定义菜单
原作者的菜单是基于Content Type实现的,扩展性很差。Hugo本身有菜单的支持,扩展性更好,所以我改为基于Hugo原生菜单的方式实现,可以无限级扩展、支持菜单排序。
config.toml
[menu]
[[menu.main]]
identifier = "books"
name = "新书"
url = "/books/"
weight = 2
[[menu.main]]
identifier = "archives"
name = "归档"
url = "/archives/"
weight = 3
[[menu.main]]
identifier = "about"
name = "关于"
url = "/about/"
weight = 4
identifier标志符必须是唯一的,不能重复;weight用于排序,值越小越靠前。
Hugo maupassant 友情链接
友情链接的实现也是遵循Hugo原生的方式,参考配置如下:
config.toml
[[params.links]]
title = "Android Gradle权威指南"
name = "Android Gradle权威指南"
url = "http://yuedu.baidu.com/ebook/14a722970740be1e640e9a3e"[[params.links]]
title = "常用开发工具CDN镜像"
name = "常用开发工具CDN镜像"
url = "http://mirrors.flysnow.org/"
params.links是一个数组,所以我们可以自定义很多友情链接。name表示显示的链接文本,title表示鼠标悬停在友情链接时,显示的文本。
Hugo maupassant 文章归档支持
Hugo默认是不支持生成归档文件的,需要自己实现。新主题已经实现了文章归档,只需要在新建content/archives/index.md文件,文件内容为:
content/archives/index.md
title: "归档"
description: Android资深工程师 ,Go和Java打杂师,《Android Gradle权威指南》作者,Android官方技术文档译者type: archives
title和description都可以换成你自己的,但是type必须是archives。
content/archives/index.md表示在content/archives/目录下的index.md文件这样Hugo就会自动生成/archives/index.html归档页面,通过类似http://www.hkxiaopan.com/archives/的URL进行访问,目前的归档是按照年份进行归档,后面可以扩展更多的归档方式。
其他静态文件
有些不需要我们转化的静态文件,比如robots.txt、我们上传的附件等,这些不需要Hugo进行处理,可以直接放在static目录下,Hugo会原封不动的拷贝。
从Hexo到Hugo踩的坑
从Hexo到Hugo踩了一些坑,这里主要介绍一些主要的。
第一个坑就是URL链接。
对于从Hexo迁移到Hugo来说,比较重要的就是保持URL链接的一致性,这样已经被搜索索引,其他文章引用的文章才可以继续被打开,否则就会出现404错误。
我以前使用Hexo的博客,文章链接是使用的permalink设置优化的URL,比如:
permalink: :year/:month/:day/:title.html
这样我们博客文章全部都是这样年月日+标题+html后缀的格式,比如Go语言参数传递是传值还是传引用这篇文章,http://www.hkxiaopan.com/2018/02/24/golang-function-parameters-passed-by-value.html。
只有文章是html后缀的格式,分类、标签等聚合页是目录Path的格式,如:http://www.hkxiaopan.com/categories/Golang/。
在新的Hugo系统中,我也想这么做,但是Hugo的permalink是不能配置html后缀的,即可你配置了,也只会生成如下的URL/year/month/day/title.html/还是一个目录,无法以.html结尾。
我查了下Hugo的文档,发现有个配置可以解决,这就是在config.toml里设置uglyurls = true。
这样的确解决了以.html结尾的问题,但是又引出来另外一个问题,就是分类、标签等也是以.html结尾了,变成了http://www.hkxiaopan.com/categories/Golang.html,查了很多文档,鱼和熊掌不可兼得(有知道的朋友一定要告诉我,多谢)。
最终我采用了指定文章URL的方式,不用uglyurls = true配置了。在每篇文章里的Front Matter加上url: /2018/02/24/golang-function-parameters-passed-by-value.html强制指定文章的URL,这样就解决了从Hexo到Hugo迁移带来的问题。
第二个坑是分类名称
我们在写文章的时候,会给文章进行分类,比如Golang,但是默认情况下,Hugo会把这个Golang转为小写,这就给我们一直用原始字符的造成困扰,为了解决这个问题,Hugo提供了preserveTaxonomyNames配置,把它设置为true就可以了保持原来分类的名字了。
config.toml
## 保持分类的原始名字(false会做转小写处理)
preserveTaxonomyNames = true
第三个坑就是URL路径
Hugo默认情况下,URL字符串里的字母都会强制转为小写,这对于分类名、标签名是大写的来说,博客迁移后(比如从Hexo到Hugo),原来的链接就失效了,为了解决这个问题,Hugo提供了disablePathToLower配置。
config.toml
## 是否禁止URL Path转小写
disablePathToLower = true
贡献
最后欢迎大家贡献和支持,多star,多PR,多提ISSUE,等着你们。https://github.com/rujews/maupassant-hugo