Hexo博客多终端自动同步部署上传

最近打算用Hexo做博客,安装完Hexo后接下来就是优化,如何解决不同PC端的写作问题,网上搜了很多,大部分都是用git上传到空间,在不同PC写作的时候下载下来,但是实现步骤当真是繁琐到不可思议,看了一会,就没有兴趣了。还有就是用AppVeyor做CI同步,可是AppVeyor一直无法注册,翻墙也不行,用Github也不行。。。网上搜了很久,无意中看到简书的文章,解决了燃眉之急,使用后发现会报错,同步不成功,只好自己动手解决问题,以下是我尝试成功的办法,说一下大概思路,用NoodeJS的shelljs模块在部署后加载了hexo b命令,实现了用hexo d一个命令同步部署和备份source文件夹到你的git仓库里面,当在不同PC写作,用git clone 仓库地址下载即可,废话不多说,直接上干货。

1.首先安装hexo,然后安装备份插件:

1
cnpm install hexo-git-backup --save

这里我直接用了cnpm因为npm慢到让你怀疑人生,至于没有启用cnpm的朋友可以查我之前的文章。《初次安装的麻烦问题解决》

2.安装后打开hexo主目录的_config.yml文件,在最下面添加如下设置:

1
2
3
4
backup:
type: git
repository:
github: git@github.com:XXX/blog.git,backup (此处为你自己的仓库地址)

3.安装shelljs模块,实现自动部署,在命令中键入以下命令:

cnpm install –save shelljs

4.在.gitignore文件中添加如下内容,说一下这个作用,排除不需要上传的文件及文件夹,例如主题和配置文件看个人需要了,建议node_modules就不要上传了,毕竟Github只有300M空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
themes/
scaffolds/
.gitignore
package.json
_config.yml
gihub.txt
npm-install/
scripts/

5.编写自动备份脚本

待到模块安装完成,在 Hexo 根目录的 scripts文件夹下新建一个 js文件,文件名随意取。如果没有 scripts 目录,请新建一个。

然后在脚本中,写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 {
echo("==================Auto Backup Begin==============================");
if (exec('hexo b').code !== 0) {
echo('Error: Git add failed');
exit(1);
}
echo("==================Auto Backup Complete============================")
echo("==================Auto Backup Complete============================")
}
}

即可完成自动部署配置

6.现在你可以试试,命令中键入以下命令:

1
hexo clean && hexo g && hexo d

0%