前言
我们在进行 markdown 写作的时候,通常会在文章中插入图片,而 markdown
的图片管理也是很烦人的事情。另外加上 hexo
的一些特性,导致图片本地预览和线上发布不一致,网上也有不少用插件来解决的方法,比如 hexo-asset-img。但是我觉得网上的大多数实践还不够完美,下面我就给出我自己的解决方案。
需求分析
本地预览:在本地预览的时候,图片应该是可以直接显示的。
线上预览:在发布到线上的版本应该使用便于共享的图床链接,这样可以很快捷的在另外的平台上发布,并且我不希望自己的静态网站中有大量的图片文件。
本地存储:我希望本地的图片文件可以被备份,而不是全部放在图床上,万一图床挂了就麻烦了。
现在网上的解决方案大致分为两类
插件派:
通过使用_config.yml
文件中的附件文件夹,即post_asset_folder: true以及
hexo-asset-img 插件来实现本地预览和线上发布的分离。
但是没有解决三方平台共享的问题并且使静态网站过于臃肿。
图床派:
通过使用各类图床把图片直接上传
本地没有备份,容易丢失
我还有一大痛点,就是 post_asset_folder
生成的文件夹名称应该是会和文章题目一样,但是我由于进行了永久链接的修改所以在生成文件夹的时候会以
abbrlink
作为文件夹名称,这样就会导致文件夹名称和文章内链接名称不一致,导致线上发布时无法预览
解决方案
把 post_asset_folder 仅仅当成本地的文件分类,不使用任何插件。 在
source/文件夹下建立一个_backup/文件夹,用来进行备份
具体写作流程:
hexo new title # 创建文章,并且同时创建同名文件夹
把文章拖到文件夹中
若使用 typora,在 typora
内设置图片默认存放路径为./${filename};若直接使用
vscode,直接粘贴图片,图片会和文章同名文件夹在同一目录下,等写作完毕了直接把文章拖出去就行了,图片路径会自动变化的
具体发布流程:
定期直接把整个_posts
文件夹下的文件夹拖到_backup / 文件夹下进行备份
回到_posts / 文件夹下面的文章,选择在 typora 中打开,在 typora
中选择上传所有图片到图床(具体图床配置网上很多,我是 GitHub +
jsdelivr),文章中的图片链接会自动替换为图床链接
删除_posts / 下的图片文件夹
hexo g && hexo d
访问线上博客,检查图片是否正常显示