本文是hexo-enchancer
插件的中文版文檔.
英文版:https://github.com/sisyphsu/h...
博文連接: https://sulin.me/2019/Z726F8....html
hexo-enhancer
是一個Hexo功能加強插件。git
此插件支持的功能較多,而且將來會繼續增長,能夠理解爲插件包
。到目前爲止,此插件支持的功能以下:github
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
npm install hexo-enhancer --save
或markdown
yarn add hexo-enhancer
date
和title
我在使用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
中的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便可,不管是看起來仍是用起來都很方便。
MIT