为Hexo Next主题添加自动备份功能(四)

每个人都应该养成备份文件的好习惯。

以前我每次博客更新博文,或者修改配置文件,都要通过git手动做版本控制。现在我们可以在博客每次deploy时,通过shell.js自动备份变更到远程仓库。我在参考自动备份Hexo博客源文件后,在博文基础上,增加了主题文件的自动备份。

系列教程

效果

步骤

安装shelljs模块

用于监听Hexo事件。

npm install --save shelljs

建立自动备份脚本

在每次发布时,执行一系列git命令,提交变动到远程git服务器。在站点目录下,新建scripts/backup.js。个人使用,则需要修改两行:

  • 修改Hexo根目录路径:cd('D:/lj/code/github/hexo/iamlj.com/blog');
  • 修改Git远程分支,如果远程Git不是master主分支:if (exec('git push origin master').code !== 0)

完整代码:

require('shelljs/global');

try {
hexo.on('deployAfter', function() { //当deploy完成后执行备份
run();
});
} catch (e) {
console.log("产生了一个错误<( ̄3 ̄)> !,错误详情为:" + e.toString());
}

function run() {
if (!which('git')) {
echo('Sorry, this script requires git');
exit(1);
} else {
hexo_iamlj_backup();
hexo_next_iamlj_backup();
}
}

function hexo_iamlj_backup(){
echo("======================hexo_iamlj_backup Auto Backup Begin===========================");
cd('D:/lj/code/github/hexo/iamlj.com/blog'); //此处修改为Hexo根目录路径
if (exec('git add --all').code !== 0) {
echo('Error: Git add failed');
exit(1);
}
if (exec('git commit -am "Form auto backup script\'s commit"').code !== 0) {
echo('Error: Git commit failed');
exit(1);
}
if (exec('git push origin master').code !== 0) {
echo('Error: Git push failed');
exit(1);
}
echo("==================hexo_iamlj_backup Auto Backup Complete============================")
}

function hexo_next_iamlj_backup(){
echo("======================hexo_next_iamlj_backup Auto Backup Begin===========================");
cd('D:/lj/code/github/hexo/iamlj.com/blog/themes/next'); //此处修改为Hexo根目录路径
if (exec('git add --all').code !== 0) {
echo('Error: Git add failed');
exit(1);
}
if (exec('git commit -am "Form auto backup script\'s commit"').code !== 0) {
echo('Error: Git commit failed');
exit(1);
}
if (exec('git push origin master').code !== 0) {
echo('Error: Git push failed');
exit(1);
}
echo("==================hexo_next_iamlj_backup Auto Backup Complete============================")
}

最后

建议一些关键的变动,还是手动写好本地commit,方便后期查找变更。其它不重要的变更,本地commit和远程push都自动化。

我参考的那篇博文,博主写的很详细,有需要扩展其它Hexo事件的,可以去参考学习

热评文章