hexo多机同步



  
   
  hexo多机同步简明教程及博客优化记录。
  
  

起因:由于装了新电脑,就想搬到新电脑上写博客,但同时要求旧电脑也能同步更新和撰写。
方法:主要是利用版本控制工具,将源文件上传到github,实现从github上同步repo更新。
一般来说,有两种较常用的方法,一是新建原有repo的分支,二是新建一个放源文件的repo。由于之前手动备份md文件到github时我已有一个单独的repo,故采取法二。

hexo大致原理

用过hexo的人都会发现,本地hexo文件和github上的文件是不同的。本地hexo保存的是.md文件,github上保存的是生成的html文件。所以直接clone github上的项目是不可行的。根据上次的分析,我们已知,_config.yml,theme/,source/,scaffolds/,package.json,.gitignore,是关注的重点。

新电脑hexo搭建工作

  1. 下载nodejs
  2. 下载git
    (记录一下版本,很多bug都是因为版本的原因造成)
    3.hexo五步法搭建hexo
    (具体可见之前的博文hexo搭建再记录,或hexo.io)

至此,hexo环境完成。

ssh秘钥生成和添加

因为是新电脑,需要将新生成的ssh添加到github ssh key中才可以使用。
(具体可见之前的博文hexo+github博客搭建中出现的问题及解决方法

拷贝数据文件

从旧电脑上的blog文件夹中拷贝_config.yml,theme/,source/,scaffolds/,package.json,.gitignore。
其它不用,因为会在hexo g && hexo d中产生。

重装npm及插件

如果你安装的是最新版的git(2.15)和nodejs(V8.9.1),npm install将会自动安装好部署所需的插件。
否则就差什么补什么。
在这里容易出各种错采坑。

部署

和旧电脑一样的步骤部署即可。

1
hexo clean && hexo g && hexo d

同步刷新

一般在部署前会在本地预览无误后再提交。但每做一次就要重新hexo g生成相当麻烦。好在有一个很酷的插件可以及时更新页面:

1
npm install hexo-browsersync --save

在localhost:4000就会同步更新你的本地修改啦。

多机同步

两台电脑不能总是把源文件拷来拷去的吧,又或者万一哪天数据丢失了怎么办?

于是我将hexo根目录下的source文件放到github上的source项目里同步更新,这样无论在哪台电脑上都可以下载最新的文件使用。

  1. 进入source文件夹,右键git bash
  2. git init初始化本地仓库
  3. git add . 添加当前目录文件到暂存区域
  4. git commit -m "<备注信息>" 提交到本地仓库
  5. git push -u origin master 提交到远程仓库

不过我最后一句命令出错,原因是找不到origin,大概是仓库指定不明确。我想到使用github desktop也许更方便,于是就用它将source仓库clone到本地hexo文件夹下,并且删除原有文件,放入现有源文件。最后commit和push。

至此,多机同步实现。

代价

github强制更新,原来的commit数600+没有了。连带着的小绿点也没了。现在的github展示页不好看了T_T


由于今后source仓库只存放源文件,因此原优化博客记录的Readme和一个sort记录放在本文最后。

hexo-blog-improve

在搭建博客以及优化博客中的记录与参考。

一些重要参考

高级进阶

网页特效

sort

node_modules/hexo-generator-index/lib/generator.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
'use strict';

var pagination = require('hexo-pagination');

module.exports = function(locals){
var config = this.config;
var posts = locals.posts;

posts.data = posts.data.sort(function(a, b) {
if(a.top && b.top) { // 两篇文章top都有定义
if(a.top == b.top) return b.date - a.date; // 若top值一样则按照文章日期降序排
else return b.top - a.top; // 否则按照top值降序排
}
else if(a.top && !b.top) { // 以下是只有一篇文章top有定义,那么将有top的排在前面(这里用异或操作居然不行233)
return -1;
}
else if(!a.top && b.top) {
return 1;
}
else return b.date - a.date; // 都没定义按照文章日期降序排

});

var paginationDir = config.pagination_dir || 'page';

return pagination('', posts, {
perPage: config.index_generator.per_page,
layout: ['index', 'archive'],
format: paginationDir + '/%d/',
data: {
__index: true
}
});
};

按更新时间排序:改一下上面文章里的代码 a.date, b.date 分别改为 a.updated, b.updated

参考资料:http://www.netcan666.com/2015/11/22/解决Hexo置顶问题/


原始:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'use strict';

var pagination = require('hexo-pagination');

module.exports = function(locals){
var config = this.config;
var posts = locals.posts.sort('-date');
var paginationDir = config.pagination_dir || 'page';

return pagination('', posts, {
perPage: config.index_generator.per_page,
layout: ['index', 'archive'],
format: paginationDir + '/%d/',
data: {
__index: true
}
});
};
文章目录
  1. 1. hexo大致原理
  2. 2. 新电脑hexo搭建工作
  3. 3. ssh秘钥生成和添加
  4. 4. 拷贝数据文件
  5. 5. 重装npm及插件
  6. 6. 部署
  7. 7. 同步刷新
  8. 8. 多机同步
  9. 9. 代价
  10. 10. hexo-blog-improve
    1. 10.1. 一些重要参考
    2. 10.2. 高级进阶
    3. 10.3. 网页特效
  11. 11. sort
|