自从使用了hexo
,就一直在折腾。没办法,强迫症做怪。
其实一直以来我都有个问题,即究竟用什么来做为permalink
?这是一个纠结狂的我纠结了很久的问题。
hexo默认提供的方案是使用年/月/日/标题
,这简直反人类啊,由于有的时候我天天可能发表好几篇博文,因此后面的标题不能去掉。
那就把前面去掉吧。
因此这就是我一直以来使用的方式。
还有一个是使用id,但此id非彼id,每次从新生成都会变化,及其不利于seo,还有多说的thread-key也不行。
但我是一个中国人,写博客的标题也是中文,中文的网址给我带来了许多麻烦,可是没办法,实在是忙,就等着看看别人作好的插件拿来用用。
然而一直没有等到满意的。
昨天上谷歌和百度看了下,中文的连接权重特别低。
看来不能再等了,咬牙本身写个吧!node
其实在hexo的插件库里面仍是有一个和个人需求比较搭边的,那就是hexo-uuid,可和个人需求仍是有必定的差距。
首先他hook的地方是new
这个事件,也就意味着我必须在命令行中执行git
hexo new title
才能得到这个uuid,而对我来讲,我历来都不是在这里建立文章的,我通常都是本身建个md文件,而后直接开写了。
因此这个东西我也是用不了啊。
并且看他写代码的水平不差,可是对hexo的了解太少,真是惋惜。不然我就不用本身动手了。github
既然得本身开发了,天然得打造一个完美符合我需求的。npm
全自动生成惟一链接api
重复生成不会覆盖bash
尽可能短小精悍hexo
持久保存可供修改post
不引用外部模块ui
自动翻译标题为英文,而后做为连接。
使用googleapi,而后获取对应的英文,做为文章的一个属性保存在front-matter中。
可是因为gfw,我这无法访问google,因此很蛋疼。google
转化所有汉字为拼音,而后用-
链接起来。
这个问题就在于转换过以后实在太长了,难以让我忍受。
因此也是果断放弃了。
对标题
+时间
进行md5
而后再转base64
,保存在front-matter
中。
通过了数次重构,终于把代码写的比较简洁了。
首先是注册before_post_render
钩子,而后取出来abbrlink
这个属性看是否存在,存在的就无论了,不然就生成链接。
其中使用了nodejs
自带的crypto
模块来获取md5校验值,用hexo-front-matter
来转换front-matter
,而后用hexo-fs
来保存文件。
npm install hexo-abbrlink --save
打开config.yml
,修改permalink
中相似这样
permalink: posts/:abbrlink/
其中:abbrlink
表明链接地址。
请在本文下留言或者github。