最近一直比较忙,今天闲下来把博客升级到Hexo(4.0.0)和NexT(7.5.0),然后把NexT的配置文件移动到Hexo的配置文件中,这样以后NexT的升级就不用总是改配置文件了。
顺便把Hexo的写作分支push到Github,这个放了好久了,今天也要做一下。
UPDATE: 最新升级到了HEXO(5.1.1)和NexT(8.0.0)。持续更新ing…
Hexo升级
首先可以升级npm,npm install -g npm
。
我先把hexo-cli升级了,在这里直接用npm outdated -g
看一下是否需要升级,然后npm install hexo-cli@latest -g
。可以不加@latest
,那就会升级到Wanted
的版本,这样会稳一些,我直接到了最新版本。
然后再到hexo的文件中,npm outdated
看一下要升级的:1
2
3
4
5
6
7
8
9
10
11
12
13λ npm outdated
Package Current Wanted Latest Location
eslint 6.0.1 6.7.0 6.7.0 hexo-site
hexo 3.9.0 3.9.0 4.0.0 hexo-site
hexo-deployer-git 1.0.0 1.0.0 2.1.0 hexo-site
hexo-generator-archive 0.1.5 0.1.5 1.0.0 hexo-site
hexo-generator-category 0.1.3 0.1.3 1.0.0 hexo-site
hexo-generator-index 0.2.1 0.2.1 1.0.0 hexo-site
hexo-generator-searchdb 1.0.8 1.2.0 1.2.0 hexo-site
hexo-generator-tag 0.2.0 0.2.0 1.0.0 hexo-site
hexo-renderer-ejs 0.3.1 0.3.1 1.0.0 hexo-site
hexo-renderer-stylus 0.3.3 0.3.3 1.1.0 hexo-site
hexo-server 0.3.3 0.3.3 1.0.0 hexo-site
然后用npm install hexo@latest -save
一个一个的升级了。
这一步走下来,效果怎么样没看出来,但是,没翻车,谢天谢地。
最重要的是更新配置文件!参考github上最新的配置文件_config.yml
link,注意参考官方Docs。
NexT更改配置位置
之前我的版本是NexT 7.2.0,现在的最新版是NexT 7.5.0,我先从Github下载一个最新版的,存在一个其他的文件夹,然后把它恢复到7.2.0(直接下7.2.0也行)。方法。把_config.yml
复制出来,用vscode和我的作比较,看一下我都更改了什么地方。然后把我更改的配置全部移动到hexo的_config.yml
下,参考这里的Hexo-Way和这里。
NexT 8.x开始可以使用npm直接安装了,配置文件也可以使用更好的形式来修改,参考Doc。
需要注意的是,如果有个子属性要修改,一定要把父属性全部拷贝过来!例如footer整个的属性全部复制过来,然后再更改,如果仅复制一部分,那么没有复制的就会出不来。
NexT升级
如果仅仅是把NexT的配置移动到hexo的配置中,上边这一步足矣。如果需要升级,则继续。
上一步结束以后,再把新下载的NexT恢复到7.5,然后再和自己的配置文件比一下,看一下都更新了那些地方,刚才的配置是不是过时了,因为有一些配置的格式发生了变化。从7.2到7.5改动还是比较大的。以后每次更新的时候,只需要查看当前版本和之前版本的区别,然后修改hexo的配置文件就行了。
如果对NexT的模板进行了魔改,那么还需要把魔改的部分每次更新都要改,我之前改过,后来更新了就放弃了,默认的这些东西都挺好用的。
注意
第一个需要注意的是NexT 7.4.0的时候fi
这个Tag被取消了(7.4.0更新link),所以如果之前的图片用过fi
的,记得改回Hexo的格式,不然会编译不出来。
第二个是,升级上来后使用related_posts的话记得安装,不然会打不开网页。npm install hexo-related-popular-posts --save
同步写作分支
在执行hexo init
的时候,就会自动调用一串的脚本:
1 | INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git |
先是:把项目hexo-starter
拉过来;
这个项目里有一个submodule,就是模板landscape,即默认的模板,随后就会安装这个submodule。
最后安装依赖。
(操作之前最好先压缩一个压缩包,如果有问题可以恢复回来)
我重新使用git init
给当前文件夹创建版本库。然后给.gitignore
添加了一行themes/
,也就是我没有同步任何模板的信息,因为我的模板没有魔改,需要下载的时候只需要重新从GitHub下载即可。如果需要同步模板,可能需要删除掉模板的.git
文件。
我在Github创建了一个新的private的仓库,然后把这个项目同步了上去。
我又在另外一个文件夹clone一下,看一下效果。
git clone git@github.com:yourid/Hexo-Blog-Backup.git
把项目拉下来cd Hexo-Blog-Backup\
然后npm install
。只要之前所有的npm在安装时都用上了-save
,那么所有的依赖都会写在package.json
中,使用这个指令就会自动安装git clone https://github.com/theme-next/hexo-theme-next themes/next
把模板拿回来
可以看到,这和执行hexo init
经过了同样的过程。安装好后的目录结构和原来也是完全一样。然后运行一下看看效果,没有发现BUG~
最后一个问题是,这样同步了以后,会丢失.deploy_git
文件夹,这里边存着之前提交到github的记录.git
文件,我的建议是可以完成这几步以后,把部署分支clone下来,改名叫做.deploy_git
放到刚才新生成的文件夹中。(我还没试过…)