目录

hexo资源引用

目录

四个月前用Jekyll搭建了第一版的GitHub Pages博客,后来也没怎么上传过博客了,最近稍微闲下来打算补充几篇近期踩坑的文章。

发现Jekyll的主题挺丑的,且基于Ruby的繁琐配置看得有点懵,当时搭建的一些注意事项基本都忘掉了,于是决定重新再用Hexo搭建一遍。

当时写的时候Jekyll资源是通过{\{ site.url }\}导入的(因为Hexo默认对以上标签进行转换,所以我加了\进行标签失效分隔,意会即可),资源全部扔在根目录下assets文件夹,切换到Hexo之后我放到了source/assets/中。从Jekyll将博客迁移过来之后发现了一个问题,静态资源访问不到了。

Hexo官方也有对资源文件夹的说明,两种实现方法。 其一是修改post_asset_folder配置,每次通过hexo new [layout] <title>命令创建新文章时自动创建一个跟title同名的资源文件夹,将所有与你的文章有关的资源放在这个关联文件夹中之后,你可以通过相对路径来引用它们,这样你就得到了一个更简单而且方便得多的工作流。但我写文章的时候经常都是从别的工具里写好之后拿来发布,且图片资源都是统一扔到一个文件夹里的,这种方案放弃。 其二是通过{\% asset_img slug [title] \%}这样的引用标签(\进行标签失效分隔)。但是发现对markdown的支持不是很友好,我在本地书写完成之后这个文件只能在Hexo使用,要在别的地方发布的话还是要进行路径的替换,这种方案也放弃。

经过一番划水不懈的努力,找到了这篇文章,看完之后有所启发,其实Hexo配置的时候有指定一个permalink,这个参数指定了文章的永久链接格式,其实Hexo创建public页面的时候是按照这个链接格式创建的html,它的默认值是::year/:month/:day/:title/,那么生成的文章默认是在这个文件夹路径下的,我们进行相对路径引用的话,层级太多,所以访问不到。那么我们对这个路径进行替换,修改项目根目录_config.yml文件中配置:

1
2
# permalink: :year/:month/:day/:title/
permalink: post/:year-:month-:day-:title

这样生成的文章都是在public目录下的post文件夹中,最后各个layout下文章通过../assets/资源名称.后缀进行引用即可。

/images/doge.gif