从WordPress迁移到Hugo完整过程

23次阅读
没有评论

共计 2724 个字符,预计需要花费 7 分钟才能阅读完成。

背景

为什么抛弃 WordPress?

  1. 网站访问量极少,大部分是自用记录些笔记
  2. 不想再买服务器了

为什么选择 Hugo?

  1. Hugo 编译速度贼快
  2. 有一款喜欢的 Hugo 主题

从 WordPress 导出数据

在 WordPress 仪表盘中,[工具] -> [导出] -> [下载导出的文件]。

搭建临时 Hexo 博客

安装 node.js

node.js 官方下载地址:https://nodejs.org/en/

设置 npm 淘宝镜像站:npm config set registry https://registry.npm.taobao.org

切回官方镜像用:npm config set registry http://www.npmjs.org

安装 Git

Git 官方下载地址:https://git-scm.com/downloads

安装 Hexo

运行下列命令安装 Hexo:

npm install -g hexo

新建一个 Hexo 博客:

hexo init <folder>
cd <folder>
npm install

再安装 hexo-migrator-wordpress 插件:

npm install hexo-migrator-wordpress --save

插件安装完成后,执行下列命令来迁移所有文章,source 可以是 WordPress 导出的文件路径或网址。

hexo migrate wordpress <source>

文章很快就能出现在 source/_posts 目录下,转换效果非常棒。

修改文章属性

刚迁移完的每篇文章都有 yaml 配置,像这样:

title: 3G 壁纸
tags:
  - 网站
id: '73'
categories:
  - - 软件
comments: false
date: 2022-01-10 22:05:31

直接丢到 Hugo 的 posts 文件夹里也没什么问题,但最好还是改一下。比如改成这样:

author: abee
categories:
- 软件
date: 2022-01-10 22:05:31
draft: false
title: 3G 壁纸 

可以使用下面的 Python 脚本来实现:

# pip install pyyaml 安装 yaml 包
import os
import yaml
import re

path = "C:\\Users\\ec\\Desktop\\_posts"
cnt = 0

for file in os.listdir(path):
    if file[-3:] == ".md":  # 判断是否为 md 文件
        cnt += 1
        print(cnt, file)

        with open(os.path.join(path, file), "r+", encoding='utf-8') as f:
            all_text = f.read()

        yaml_text = re.findall("---([\s\S]*?)---", all_text)[0]  # 找到 yaml 字符串
        old_dic = yaml.safe_load(yaml_text)  # 用 yaml 库转字典对象

        new_dic = {"title": old_dic["title"],
            "author": "abee",
            "draft": False,
            "categories": old_dic['categories'][0],
            "tags": old_dic['tags'],
            "date": old_dic["date"]
        }

        yaml_res = yaml.safe_dump(new_dic, allow_unicode=True)  # 用 yaml 库将字典解析为 yaml 字符串
        res = all_text.replace(yaml_text, "\n"+yaml_res)

        post_id = old_dic["id"]
        os.mkdir(os.path.join(path, post_id))
        path_md = os.path.join(path, post_id)
        with open(os.path.join(path_md, 'index.md'), "w+", encoding='utf-8') as f:
            f.write(res)

安装 Hugo

Hugo 有两个版本:hugo 和 hugo_extended,怎么选?建议安装 hugo_extended,很多功能,包括一些主题,都需要 hugo_extended 的支持。

Hugo 官方下载地址:https://github.com/gohugoio/hugo/releases

创建目录

例如,在 D 盘创建文件夹 Hugo,在文件夹 Hugo 下创建文件夹 bin 和 sites。

Hugo 下载后,解压,将 hugo.exe 文件放到 D:\Hugo\bin 目录下。

配置环境变量

将 Hugo 添加到 Windows 的环境变量 PATH 中。

[此电脑] -> [属性] -> [高级系统设置] -> [环境变量] -> [系统变量] -> [Path] -> [编辑] -> [新建],把 D:\Hugo\bin 加入环境变量。

打开 cmd,输入 hugo version,查看 hugo 是否添加成功。

搭建博客

cd Hugo\sites
hugo new site myblog

创建第一篇文章

cd myblog
hugo new posts/first_post.md

启动博客

hugo serve -e production -D

-D 表示将草稿文件也进行渲染。
-e production,hugo serve 默认运行环境是 development,而 hugo 默认运行环境是 production。

添加主题

hugo 没有自带主题,所以需要自己导入主题文件。

官网主题库:https://themes.gohugo.io/

导入主题可以用 git clone 的方式,也可以到相应主题的 github 中下载 zip 文件然后解压到自己博客的 themes 文件夹中。

Hugo 全局配置文件支持三种格式:toml,yaml,yml。这个配置文件可以直接从主题文件中的 exampleSite 里 copy 到博客文件夹下,然后进行修改。

构建网站

hugo

默认会在站点根目录的 public/ 目录下生成对应的静态页面,可通过在命令行指定 - d 或者 –destination 参数来改变静态页面的存放路径,也可以通过在配置文件中设置 publishDir 来指定。

public 上传到 github

git init
git add . # 添加当前目录下的所有文件到暂存区
git commit -m "add post" # 生成版本
git branch -M main
git remote add origin git@github.com: 用户名 / 仓库
git push -u origin main

正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2023-10-07发表,共计2724字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)