用Hexo写博客是一件比较享受的事情,无奈如果换电脑的话,备份博客就是一件比较闹心的事情。
前言
我曾经给出过通过Git备份Hexo博客源文件的方式,这种方式虽然能够备份Hexo博客的源文件,但是对于博主这种懒人,每次更新博文都需要输入两三行重复的Git命令真是一件麻烦的事情。况且指不定哪天就搞忘push到github上了。
原理
前两天博主刚刚编写过关于Hexo添加文章时自动打开编辑器的相关文章,其原理就是利用NodeJS
的事件监听机制实现监听Hexo的new
事件来启动编辑器,完成自动启动编辑器的操作。
那么可不可以通过通过监听Hexo的其它事件来完成自动执行Git命令完成自动备份呢?通过查阅Hexo文档,找到了Hexo的主要事件,见下表:
事件名 | 事件发生时间 |
---|---|
deployBefore | 在部署完成前发布 |
deployAfter | 在部署成功后发布 |
exit | 在 Hexo 结束前发布 |
generateBefore | 在静态文件生成前发布 |
generateAfter | 在静态文件生成后发布 |
new | 在文章文件建立后发布 |
于是我们就可以通过监听Hexo的deployAfter
事件,待上传完成之后自动运行Git备份命令,从而达到自动备份的目的。
实现
将Hexo目录加入Git仓库
本脚本需要提前
将Hexo加入Git仓库并与Github或者Gitcafe远程仓库绑定之后,才能正常工作。如果你不知道怎么操作,请参考这篇博文:
安装shelljs
模块
要实现这个自动备份功能,需要依赖NodeJs的一个shelljs
模块,该模块重新包装了child_process
,调用系统命令更加的方便。(其实就是因为博主懒( ╯▽╰))该模块需要安装后使用。
在命令中键入以下命令,完成shelljs
模块的安装:
1 | npm install --save shelljs |
编写自动备份脚本
待到模块安装完成,在Hexo
根目录的scripts
文件夹下新建一个js文件,文件名随意取。
如果没有scripts
目录,请新建一个。
然后在脚本中,写入以下内容:
1 | require('shelljs/global'); |
其中,需要修改第
17
行的D:/hexo
路径为Hexo的根目录路径。(脚本中的路径为博主的Hexo路径)如果你的Git远程仓库名称不为
origin
的话,还需要修改第28
行执行的push命令,修改成自己的远程仓库名和相应的分支名。
保存脚本并退出,然后执行hexo deploy
命令,将会得到类似以下结果:
1 | INFO Deploying: git> |
这样子,每次更新博文并deploy
到服务器上之后,备份就自动启动并完成备份啦~是不是很方便呢?
Enjoy it!