平滑迁移 Octopress 到 Hugo

开发 开发工具
由于自己还是比较喜欢 Octopress 默认的这套主题,所以在读过 Hugo 开发文档后,在严格尊重原主题的原则下修改了部分增强样式,制做了一个适配 Hugo 的 Octopress 主题。

原由

自从新博客建立以来一直用 Octopress 这个博客框架来搭建静态文章页面。漂亮的默认主题、方便的发布到 github page 等功能吸引了我

但就在最近因为家里的用 Macbook,刚好升级到了新版的 Sierria,杯具的是之前安装的 Octopress bundle 都失效了。调试了很久还没把环境搭建好,再加上之前发现 Octopress 的 Markdown 解析器老报错,于是就决定要更换一个配置安装简单点的博客生成器了

在参考了这个网站上的各种生成器后 staticgen,果断选择了 Hugo。没有什么特殊原因,下载安装试用一下就明白了。Hugo 由于是 Go 语言写的,所以你只需要下载好官方给的二进制可执行文件就可以了,再也不用安装各种依赖,然后各种换源什么的乱折腾了。这一点就足以让我转入 Hugo

主题

由于自己还是比较喜欢 Octopress 默认的这套主题,所以在读过 Hugo 开发文档后,在严格尊重原主题的原则下修改了部分增强样式,制做了一个适配 Hugo 的 Octopress 主题。虽然 Hugo 官方有一个适配 Octopress 的主题 hugo-octopress 但是对原主题改动太多,我并不喜欢。

迁移

文章

Octopress 使用的文章描述头是 yaml 格式的,需要转换成 Hugo 的 toml,自己手动写了个 NodeJS 脚本 来完成这个工作,基本上很轻松就完成了。注意:建议放在 content/archives 目录下面,这样的话原来的文件目录和新的就是一致的了

再吐槽下 md 文件名,Octopress 默认是生成时间为前缀的,如:2016-06-13-name.markdown。 如果转移到 Hugo ***链接还要保持原来文件名格式的话就得把这个前缀干掉(name.md),这样的话排序就乱了。在各种编辑器、文件夹中不按创建顺序排序,看起来很别扭也不方便。

文章链接

考虑到之间已经写过很多文章了,搜索引擎都已收录,所以要保持原来的文章链接格式不变。在 Hugo 配置文件里面加上这段,使用文件名做文章***链接:

  1. [permalinks] 
  2. archives = "/:year/:month/:day/:filename/" 

存档

Octopress 默认的存档地址是 archives,这个我们可以直接在 Hugo 博客目录 content 里面新建一个目录名为 archives 就可以了,以后新建文章都以这个 Section 为准:

  1. hugo new archives/your-post-name.md 

RSS

Octopress 默认的是 atom.xml,然而 Hugo 中默认的是 index.xml。不过我们可以在 Hugo 中做个配置,和之间保持一致:

  1. RSSUri = "atom.xml" 

然而实际测试的时候在模板里面调用 {{ .RSSlink }} 始终都返回 index.xml。手动把模板里面的 RSS 链接改成 {{ .Site.BaseURL }}atom.xml 居然能生效?!这估计是 Hugo 的一个 bug。好在被发现了,要不然新老订阅 RSS 地址不一样事情就比较麻烦了。

分页

Octopress 默认的格式是 posts/2,Hugo 中是 posts/2 同样需要加个配置:

  1. paginatePath = "posts" 

Hugo 的几个基本概念

这几个概念主要在修改主题的时候能用到

Front Matter

类似 markdown 文件的配置描述,用来配置文章的标题、时间、链接、分类等元信息,提供给模板调用

  1. +++ 
  2. title = "post title" 
  3. description = "description." 
  4. date = "2012-04-06" 
  5. tags = [ ".vimrc""plugins""spf13-vim""vim" ] 
  6. categories = [ 
  7.   "cat1"
  8.   "cat2" 
  9. +++ 

Sections

在 content 下面的一级目录,通常有分类的概念,但只是文件夹维度的物理隔离

Types

如果没有为文章指定 type 配置,文章默认就属于当前属的 Section,type 可以在 Front Matter 中指定,而 Section 不可以

Archetype

新建文章时候的默认模板,会带有指定的 Front Matter 头

Taxonomy

分类、标签、系列这种描述文章属性的都属于 Taxonomy Terms

总结

Hugo 确实是一个不错的博客框架,配置简单、功能强大,很多东西都以「惯例」默认提供了,比如内置 TableOfContents,用来写博客足亦。

不过由于是 Go 语言写的,很多人并不知道有这么好用的一个东西,所以社区并不是很好。这可能就是所谓的编程的帮派论吧!

【本文是51CTO专栏作者周琪力的原创稿件,转载请注明出处】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2022-10-08 09:33:00

平台中间件

2023-11-14 08:44:55

数倍数据

2024-08-22 14:16:08

2022-07-27 22:48:29

消息中间件RocketMQ架构设计

2009-01-18 11:11:36

InnoDBMySQLMVCC

2019-08-09 08:05:11

MQ平滑迁移架构

2021-03-06 08:02:39

MySQL集群服务器

2015-01-26 14:35:22

数据中心迁移

2023-11-20 11:32:50

2009-12-29 16:25:14

全业务接入网

2017-03-24 14:46:50

数据架构数据库

2021-03-01 10:10:39

数据迁移扩容

2021-06-24 08:00:00

开发Hugo工具

2010-10-09 21:09:04

GPONPON

2023-02-24 08:27:56

RabbitMQKafka架构

2011-09-15 09:30:35

Fedora 17

2019-07-29 10:18:17

数据库高可用架构

2010-11-22 09:36:37

Perl脚本SolarisLinux

2024-05-14 08:19:54

点赞
收藏

51CTO技术栈公众号