Hexo博客迁移步骤(踩坑记录)

本文记录了博主在更换电脑后将旧电脑本地的Hexo博客项目迁移到新电脑,并实现在新电脑上正常发布Hexo博客至GitHub的步骤。

说明:

  • 建议优先使用前置步骤+解决方案(一);
  • 博主对Hexo等工具并不是很熟悉,本文仅供参考,如有错误,欢迎指正;
  • 本地的Hexo博客项目本身也可上传至GitHub进行管理和备份,但此方法不在本文讨论范围内。

前置步骤

无论是使用解决方案(一)还是解决方案(二),都需要先执行以下前置步骤:

安装Git

下载链接:Git

需要完成相应的SSH配置,网上教程较多,这里省略。

安装Node.js

下载链接:Node.js

所需版本可参考 链接

安装hexo-cli

安装方式:在任意位置打开 git bash,执行指令 npm install hexo-cli -g,其中 -g 代表全局安装,hexo-cli 是 hexo 框架的 command line interface

此处列出博主使用的版本供参考:

旧电脑 新电脑
node.js: 14.15.0
npm: 6.14.8
hexo-cli: 4.2.0
hexo: 5.2.0
node.js: 18.18.2
npm: 9.8.1
hexo-cli: 4.3.1
hexo: 5.2.0

重要说明:

在使用任何一种解决方案之前建议先将对应GitHub仓库中的内容(包括提交记录)进行备份,以免出现提交记录被覆盖等情况。可以使用新建分支的方法来进行备份。

若使用新电脑部署博客后遇到历史提交记录被覆盖的问题,可以在旧电脑的项目中重新运行hexo d,恢复记录。再尝试其它解决方案。

博主实际上先尝试了解决方案(二)中所述方法,但该方案可能会导致一些问题,所以最后采用了解决方案(一)中所述方法,并将其命名为解决方案(一)。

解决方案(一)

直接将原项目文件夹中所有文件复制到新文件夹中,无需进行其它操作。

在 Git Bash 中进入项目文件夹(或在项目文件夹下打开 Git Bash),确认以下命令是否可以使用:

hexo -v 可查看hexo及其它依赖包的版本

hexo g 生成博客内容

hexo s 本地部署

hexo d 部署至云端

若此时已可正常生成和部署博客,则无需关注解决方案(二)。

解决方案(二)

复制所需文件至新电脑的项目文件夹中

复制原项目文件夹下的部分文件夹和文件至新项目文件夹中:

文件/文件夹名 是否复制 说明
.deploy_git/
可选是否复制
该文件夹下存储了一些与git部署相关的信息,若不复制,在执行 hexo d 时会重新生成。但博主由于未复制该文件夹,导致部署时原来的所有提交记录被覆盖,所以还是建议复制。
node_modules/ 不用复制 该文件夹下存放了一些项目依赖包。
public/ 不用复制 运行 hexo g 时会重新生成。
scaffolds/ 需要复制
source/ 需要复制
themes/ 需要复制
.gitignore 需要复制
_config.yml 需要复制
db.json 不用复制 运行 hexo g 时会重新生成。
package.json 需要复制 该文件存储了项目的基本信息和依赖信息等。
package-lock.json 可选是否复制 若想要保持各个项目依赖包版本不变,可复制该文件。该文件的作用可参考链接1链接2
_config.butterfly.yml 需要复制(如有) 主题配置文件,因为博主使用了butterfly主题,所以有该文件。

安装依赖包

在 Git Bash 中进入项目文件夹(或在项目文件夹下打开 Git Bash),运行 npm install 命令(注意路径需为项目文件夹),会自动根据 package.json 和 package-lock.json(如有)文件中的内容安装依赖包。

博主在该过程中遇到一些漏洞警告,使用指令 npm audit fixnpm audit fix --force 后未能完全解决问题,删除package-lock.json文件后重新进行安装也遇到问题。观察后发现主要问题集中在 hexo-renderer-jade 和 hexo-renderer-markdown-it-plus 中,前者已经被 hexo-renderer-pug 替代,可以不安装,后者则根据 Butterfly 主题的安装文档修改为使用 hexo-renderer-markdown-it。

如在执行安装指令后想重新安装依赖包,则可删除 node_modules 文件夹及其内容,并使用 npm cache clean --force 清理缓存。再重新运行安装指令进行安装。

安装好依赖包后,可使用 hexo ghexo s 指令进行测试,若可正常生成博客和本地部署,则说明安装成功。

注意使用该解决方案后,使用 hexo d 指令进行部署可能造成Github仓库中的历史提交记录被覆盖,因为部署时会执行 git push xxx --force 。建议做好备份。若在复制文件时复制了.deploy_git/,则可能不会有该问题。

参考:

  1. https://www.jianshu.com/p/906294181814
  2. https://www.zhihu.com/question/21193762/answer/103097754
  3. https://xiuyuantech.github.io/2021/12/24/hexo_blog_migration/
  4. https://blog.csdn.net/qq_43698421/article/details/120407042