从 WordPress 迁移到 Hexo,主要分为 "导出-转换-部署" 三个步骤,核心是使用 Hexo 官方插件 hexo-migrator-wordpress。整个过程并不复杂,以下是详细步骤:
一、前期准备:搭建 Hexo 环境
-
安装 Node.js 和 Git:Hexo 基于 Node.js,需先安装 Node.js(自带 npm)和 Git。
-
安装 Hexo :打开终端,执行
sudo npm install -g hexo-cli。 -
初始化博客 :创建一个新文件夹(如
myblog),进入后执行hexo init和npm install。
二、导出数据:从 WordPress 获取 XML 文件
登录 WordPress 后台,在左侧菜单找到 "工具" → "导出" ,选择 "所有内容" 并点击 "下载导出的文件" ,得到一个 .xml 文件。
三、迁移数据:导入到 Hexo
-
安装插件 :在 Hexo 博客根目录,运行
npm install hexo-migrator-wordpress --save。 -
执行导入 :运行
hexo migrate wordpress <source>,将<source>替换为你刚下载的 XML 文件路径。 -
(可选)下载图片 :如需一并迁移图片,加上
--import-image参数:hexo migrate wordpress <source> --import-image。如果上面命令下载图片失败,可以手动上传(最稳妥):通过 FTP/SFTP 连接服务器,进入
wp-content/uploads文件夹,将整个uploads目录下载到本地,然后复制到 Hexo 的source文件夹中。
四、效果预览与后续设置
-
本地预览 :运行
hexo clean && hexo generate && hexo server,然后访问http://localhost:4000查看迁移效果。 -
如果文章图片链接不对,可以使用下面脚本一键批量替换:批量把当前目录下所有
.md文件中的http://www.test.com/wp-content/uploads替换成/uploads和批量把当前目录下所有.md文件中的https://www.test.com/wp-content/uploads替换成/uploadsbashcd ~/myblog/source/_posts/ sed -i 's|http://www.test.com/wp-content/uploads|/uploads|g' *.md sed -i 's|https://www.test.com/wp-content/uploads|/uploads|g' *.md -
设置主题 :在 Hexo 官网选择主题,将下载的主题文件夹放入
themes目录,并修改根目录的_config.yml文件。
五、本地运行hexo clean && hexo generate && hexo server不自动退出,需要Ctrl+C才退出的解决方法
结论:hexo generate 本身不应该会"卡住不退出",如果它执行完了不退出,说明有某个 Node.js 子进程或后台句柄没有被释放,Hexo 主进程在等待它。你本地和 EdgeOne 遇到的是同一个根因。
先验证一个关键事实
在终端运行 hexo generate 后,等一下 ,然后看它是否超过 30 秒还不停。如果 30 秒内退出了,那只是"慢",不是"卡住"。
根因:Node 进程有未释放的句柄
进一步定位到罪魁祸首是 camaro(被 hexo-migrator-wordpress 使用)和 eslint 等库里的 Worker 线程 在空转,导致进程无法自然退出。卸载 hexo-migrator-wordpress 后,问题立刻消失。
你现在应该做的事
第一步:检查是否有"历史遗留"插件
你曾经用过 WordPress 迁移吗?运行:
bash
npm ls hexo-migrator-wordpress
如果有输出,说明这个插件还在。它依赖的 camaro 会在后台创建 Worker 线程,导致 Hexo 无法自动退出。
第二步:直接卸载它
bash
npm rm hexo-migrator-wordpress
卸载后,再次运行 hexo generate,看是否能正常退出。
💡 几个关键提醒
- 图片处理 :如果文章引用了 WordPress 的图片,建议迁移时使用
--import-image选项。 - 永久链接 :迁移后文章链接会变,若想保留原链接,可安装
hexo-generator-alias插件或手动配置永久链接格式。 - 内容检查:导入后建议抽查几篇文章,确保 Markdown 格式和图片显示正常。
- 部署上线:Hexo 是静态博客,通常部署到 GitHub Pages 等免费托管服务,无需服务器。
迁移完成后,旧 WordPress 网站的文章和页面就已成功转移到 Hexo。记得在 source/_posts 目录下检查导入的文章,就可以开始享受极速的静态博客体验了。