问题来源
自从全球最大的同性交友网站–github被墙了之后,加之国内访问速度慢,把hexo静态网站托管到gitee就成了不二之选。问题是,gitee pages不支持自动更新,需要开通pro版本才行,花这钱就跟花钱开百度网盘会员一样不情愿,怎么办呢?—-github actions。
解决步骤
使用github actions可以参考这个开源项目
现在问题换到hexo身上,在我们对post文件进行修改之后,一般需要执行hexo c
清理缓存(不是必须),hexo g
和hexo d
。在使用github actions的时候,需要在根目录添加文件.github/workflows/test.yml
来定制actions的流程,但是在执行hexo d
的时候,会将这个文件删掉,导致actions失效。我们的问题就是怎么保证.github文件夹一定存在于根目录。而根目录是hexo 托管的,我的解决办法是这样的:
把.github文件夹复制到hexo根目录的.deploy_git
如果不添加进来,你会发现,即使你把.github文件夹放到public下,执行deploy命令,hexo也不会托管他。添加进来就可以保证,只要public存在这个文件夹,就可以deploy到远程的master上。
写脚本一键更新
hexo的流程是这样的,执行hexo clean,会把整个public文件夹删除。然后执行hexo g,会渲染source文件夹里面的md文件成html页面,也就是我们在blog看到的页面。执行hexo d,更新到github。
所以我们的脚本顺序是这样的:
进入到hexo根目录
执行
hexo clean
命令执行
hexo g
命令复制根目录的
.github
文件夹到public
内。这里需要我们提前把
.github
文件夹复制到根目录,放到这里是不会消失的。执行
hexo deploy
命令完事
所以最后我们更新博客的流程是这样的,双击bat文件,完事。
这里是我的bat文件,仅供参考:
CMD.bat
1 | cmd /k "cd /d D:\development\myblog&&hexo clean &&hexo g && xcopy D:\development\myblog\.github D:\development\myblog\public\.github\ /e && hexo d" |
最后你会发现:
爽呆!!!!