迁移Hexo至新的设备

因为前些日子重装系统,十分彻底,导致我的Hexo环境没了,代码托管在Github,所以代码没事,然后今天终于有兴致迁移一下Hexo博客了。

与其说是迁移不如说是重新安装Hexo的运行环境,因为我代码保存在仓库,所以迁移博客,先拉去仓库的文件,同理本地迁移的话,就是复制粘贴。

1.安装Git

网上一些大佬都用的Git bash,因为一开始我比较菜鸡,所以我从Github Desktop入手的,现在也不想换,用习惯了,可能回头没有图形化平台会尝试去使用Git bash。

所以网上的配置是重新安装Git并配置无密pull和push

但是如果你使用的是图形化的话,就直接登录,然后把仓库clone回来。

全部点点点的操作我就不截图了。。。

2.安装Node.js

Hexo基于Node.js 所以运行环境需要安装Node.js

选择windows安装包下载安装,然后使用cmd验证是否添加环境变量。

1
2
node -v
npm -v

分别检测node和npm是否正常。

3.复制文件

这个步骤需要舍弃一些不需要的文件。

需要保留的:

  • _config.yml:站点配置
  • package.json:说明使用那些包(只包含大版本号,)
  • package-lock.json:(个人觉得可以保留)是之前安装包的版本和依赖的完整备份
  • scaffolds:文章的模板
  • source:自己写的博客文件
  • themes:主题
  • .gitignore:限定在提交的时候哪些文件可以忽略

需要删除的:

  • .git:这是github用于表示本地库的文件,删除不影响博客
  • node_modules:在用npm install会重新生成
  • public:hexo g会重新生成
  • .deploy_git:在使用hexo d时也会重新生成
  • db.json文件

这里我大概删除了.git和node_modules还有一些其他的上古遗物

4.运行npm install

因为有package.json和package-lock.json两个文件的存在,所以npm知道需要安装什么包。

我觉得解释一下这两个文件也比较重要,虽然这一步只需要跑一下npm install就好了。


  • package.json:记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,
  • package-lock.json:是在 npm install时候生成一份文件。记录了node_modules目录下所有模块(包)的名称、版本号、下载地址、及这个模块又依赖了哪些依赖。

这两者的区别在于:

npm5以前:

  • 没有package-lock.json这个文件。package.json文件会记录你项目中所需要的所有模块。当你执行npm install的时候,node会先从package.json文件中读取所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块进行对比,没有的直接下载,已有的检查更新。
  • 因为package.json只能锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,所以你每次重新npm install时候拉取的都是该大版本下面最新的版本。一般我们为了稳定性考虑我们不能随意升级依赖包,因为如果换包导致兼容性bug出现很难排查,这样很容易出现问题,所以package-lock.json就是来解决包锁定不升级问题的
  • 另外,package.json文件只记录你通过npm install方式安装的模块信息,而这些模块所依赖的其他子模块的信息不会记录。

npm5以后:

  • package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新。
  • 因此,正因为有了package-lock.json文件锁定版本号,所以当你执行npm install的时候,node不会自动更新package.json文件中的模块,必须用npm install packagename@x.x.x(指定版本号)来进行安装才会更新,package-lock.json文件中的版本号也会随着更新。
package-lock.json的作用:
  • 如果重新 npm install 的时候以及当node_modules文件夹并不存在或被删除时,需要用到npm install重新装载全部依赖时,通过package-lock.json可以直接表明下载地址和相关依赖,就无需再从package.json逐个分析包的依赖项,因此会大大加快安装速度,package-lock.json目的就是确保所有库包与你上次安装的完全一样。
1
2
如果要升级package-lock.json里面的库包
npm install [email protected]

5.安装其他包

1
2
3
4
5
npm install hexo-deployer-git --save        #这个包是用来运行hexo d的直接推送到github, 但是我不用, 我用的图形化github, 很多人都用的hexo d, 所以如果你需要的话请务必安装。
npm install hexo-generator-sitemap --save #google的站点地图,如果你需要的话。
npm install hexo-generator-baidu-sitemap --save #baidu的站点地图,如果你需要的话。
npm install -g hexo-cli #如果你无法使用hexo g等命令的话安装这个。
npm install hexo-generator-feed --save #建立RSS订阅,如果你需要的话。

实测在安装baidu站点地图的时候遇到了奇怪的问题,只是我也看不太懂npm的报错,所以有能力的人可以尝试解决。建议不要安装。

这边安装完本地测试一下,hexo cleanhexo ghexo s

6.然后吧我就准备上传了

测试完成没有问题,就是在安装baidu站点地图插件的时候报了很多错,有毛病,这个等我回头再研究。

在挖一个坑在这。

目前有两个坑,npm的管理工具和评论系统的升级。

据我观测waline好像被墙了。。。


迁移Hexo至新的设备
https://steammilk.com/2022/11/27/2022-all/move/
作者
蒸奶泡
发布于
2022年11月27日
更新于
2025年1月8日
许可协议