关于删除hexo个人博客文章时的坑

记录一个删除hexo博文时的坑

别在source文件夹为空时执行hexo clean

网上许多文章说删除hexo文章时,先在source文件夹下删掉相应的md文件,再执行hexo g。
这时很多人会发现文章还是存在,于是又有人说要执行hexo clean。
我试了之后发现,
千万不要在_post文件夹中没有文件时执行hexo clean!!!这样做会使你的整个博客404!!!


解决方案

如果已经执行了而且真的404了怎么办?

不用重新搭建博客!只需要把文件夹结构恢复至初始结构就行了,我当时给source文件夹下重新添加了_post文件夹,然后用hexo new重新发一篇新的文章,再hexo g就好了。

正确的清空文章姿势

原则是_post文件夹不能为空,所以主要有以下几种方法:

  1. 等到下一篇文章创建后再删除之前的
  2. 直接删除原文章的标题和内容,但不要删除文件,等想要写下一篇时在这个文件上改
  3. 给文章设置隐藏。请参考博文:hexo首页隐藏部分文章

出错原因

最后来总结一下原理。

首先,hexo g执行后为什么文章仍然存在?

hexo官方文档中,说明了g(generate)指令是生成静态网页的指令。且在生成文件的说明中指出,g指令将比对原有文件,有变动的文件才会更新。我尝试之后发现,g指令没有任何问题,问题出在hexo d!推送到远端后,远端的文章没有被删除,这才是根源。

那么hexo clean后为何造成网站崩溃呢?

仍旧查看hexo官方文档,hexo clean是一条用于“清除缓存文件 (db.json) 和已生成的静态文件 (public)”的指令。public文件夹下存放的是hexo g后生成的静态网站,其中有一个代表博客主页的index.html,而该网站的生成需要有至少一个_post文件夹下的文章。如果_post文件夹下是空的,在hexo clean后hexo g,会因为找不到publish文件夹下的index.html而404。