suyc's blog

哎,什么时候才能把英语学好啊🙇‍~

Hexo、NexT升级与写作分支同步

最近一直比较忙,今天闲下来把博客升级到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.ymllink,注意参考官方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
2
3
4
5
6
7
8
9
10
11
12
INFO  Cloning hexo-starter https://github.com/hexojs/hexo-starter.git
Cloning into 'G:\Blogtest\xxxx'...
...
Submodule 'themes/landscape' (https://github.com/hexojs/hexo-theme-landscape.git) registered for path 'themes/landscape'
Cloning into 'G:/Blogtest/test/themes/landscape'...
...
Submodule path 'themes/landscape': checked out '73a23c51f8487cfcd7c6deec96ccc7543960d350'
INFO Install dependencies
...
added 362 packages from 469 contributors in 25.55s

INFO Start blogging with Hexo!

先是:把项目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放到刚才新生成的文件夹中。(我还没试过…)