Hexo功能加強插件

本文是hexo-enchancer插件的中文版文檔.
英文版:https://github.com/sisyphsu/h...
博文連接: https://sulin.me/2019/Z726F8....html

介紹

hexo-enhancer是一個Hexo功能加強插件。git

此插件支持的功能較多,而且將來會繼續增長,能夠理解爲插件包。到目前爲止,此插件支持的功能以下:github

  • 自動生成title:根據文件名自動生成標題。
  • 自動生成date:根據文件名自動生成日期,具體策略相似Jekyll
  • 自動生成abbrlink:根據標題進行base32crc32生成短連接。
  • 自動生成categories:根據文件的路徑解析文章所屬分類。
  • 自動生成tags:根據配置在_config.yml中的可用tagskeywords自動掃描文章中出現的標籤。

正常狀況下編寫的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

安裝

npm install hexo-enhancer --save

markdown

yarn add hexo-enhancer

用法 — datetitle

我在使用Hexo以前,曾經用過一段時間Jekyll,拋開總體不談,我的感受Jekyll的文件名整合日期和標題的策略挺不錯的,使用Hexo以後爲了維護Front-matter真的很煩。hexo

所以本插件中也實現了相似的文件名策略,即直接將 date + title放在文件名裏面,由插件在Hexo編譯時動態解析這些屬性,整個過程很是簡單方便。post

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中的keywordstags屬性收集全局標籤候選詞,而後給每一篇文章自動掃描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

相關文章
相關標籤/搜索