Hexo功能增强插件

38次阅读

共计 2281 个字符,预计需要花费 6 分钟才能阅读完成。


本文是 hexo-enchancer 插件的中文版文档. 英文版:https://github.com/sisyphsu/h… 博文链接:https://sulin.me/2019/Z726F8….
介绍
hexo-enhancer 是一个 Hexo 功能增强插件。
此插件支持的功能较多,并且未来会继续增加,可以理解为插件包。到目前为止,此插件支持的功能如下:

自动生成 title:根据文件名自动生成标题。
自动生成 date:根据文件名自动生成日期,具体策略类似 Jekyll。
自动生成 abbrlink:根据标题进行 base32 和 crc32 生成短链接。
自动生成 categories:根据文件的路径解析文章所属分类。
自动生成 tags:根据配置在_config.yml 中的可用 tags 和 keywords 自动扫描文章中出现的标签。

正常情况下编写的 Hexo 文章需要在 markdown 头部手动指定许多属性,例如:

title: Title
date: 2019-03-05
categories: [A, B]
tags: [tag1, tag2]

# Title

This is a markdown file, in categories [A, B], with tags [tag1, tag2].

使用 hexo-enhancer 插件之后,以上 Front-matter 完全不需要手动指定:
# Title

This is a markdown file, in categories [A, B], with tags [tag1, tag2].
消失的 Front-matter 完全按照约定规则由 hexo-enhancer 自动生成,让你可以更加惬意简单地撰写博文。
安装
npm install hexo-enhancer –save

yarn add hexo-enhancer
用法 — date 和 title

我在使用 Hexo 之前,曾经用过一段时间 Jekyll,抛开整体不谈,个人感觉 Jekyll 的文件名整合日期和标题的策略挺不错的,使用 Hexo 之后为了维护 Front-matter 真的很烦。
因此本插件中也实现了类似的文件名策略,即直接将 date + title 放在文件名里面,由插件在 Hexo 编译时动态解析这些属性,整个过程非常简单方便。
hexo-enhancer 解析文件名的正则表达式如下:
/^.?(\d{4})[-_]?(\d{2})[-_]?(\d{2}).?[-_.@#]*(.*)$/
如果你熟悉正则表达式的话,就知道具体格式多么灵活了,以下所有格式都可以被正确解析:
20091010-Title.md
2009-10-10_Title.md
2009-10-10-Title.md
2009/10/10#Title.md
2009/10/10@Title.md
[20091010]-Title.md
【20091010】Title.md
「20091010」-Title.md
hexo-enhancer 会将以上文件名全部解析为(最终结果不会回写入.md 文件中):

title: Title
date: 2009-10-10

用法 — categories

hexo-enhancer 会将.md 文件所在目录及父目录的名称添加入 categories 属性中,因此你应该按照文章分类放置.md 文件,事实上大多数人一直都这么做的。
比如 _posts/ 区块链 / 比特币 /20091010- 比特币简介.md 文章将自动获得下面的 categories 属性:

title: 比特币简介
date: 2009-10-10
categories: [区块链, 比特币]

用法 — tags

我一直认为,文章标签不应该手动维护,因为这样做太麻烦且容易遗漏,最终导致标签非常混乱。
正确的做法应该是,将常见的标签关键词全局配置好,然后根据配置好的标签关键词,自动扫描每篇文章包括哪些关键词并生成 tags 属性。
hexo-enhancer 的做法就是这样,启动后扫描_config.yml 中的 keywords 与 tags 属性收集全局标签候选词,然后给每一篇文章自动扫描 tags。
例如,_config.yml 配置的标签可以是这样的:
keywords: HTML, JavaScript, Hexo
tags: Java, Golang, React, Vue
hexo-enhancer 会扫描您的.md 文章,如果文章内出现以上关键词,则自动将其分配如文章的 tags 属性中。
需要特别指出的是,keywords 是标准配置,它最终会出现在网页 meta 中,而 tags 是自定义的属性,只会被本插件使用。
用法 — abbrlink

hexo-enhancer 使用 base32(crc32(title)) 算法为每一篇文章分配 abbrlink 属性,您可以在 permlink 中使用它们:
permalink: :year/:abbrlink.html
# permalink: :year/:abbrlink
# permalink: posts/:abbrlink.html
# permalink: :year/:month/:day/:abbrlink.html
使用 abbrlink 之后,文章的 url 就会变得非常简洁,例如 https://sulin.me/2018/3055NXV.html
有一些插件会根据标题的拼音、翻译生成 permlink,但是我感觉这些都不是好的做法。事实上 url 不宜太长,将一句话放在 url 中并不一定增强所谓的 seo 优化,反倒导致其使用起来相当不便。
就像许多博客平台一样,为每篇文章分配短小且唯一的 url 即可,无论是看起来还是用起来都很方便。
License
MIT

正文完
 0