# 前言

近日尝试在新电脑上配置博客环境,发现原来的 Shoka 主题已经过于陈旧了,环境搭建非常困难,依赖的软件包版本老旧,并且原作者没有时间在进行维护和开发,已经到了需要动手解决以下的时候了。在之前的文章《从 Valine 迁移到 Waline》中,介绍了从 Valine 迁移到 Waline 的方法。因为 Shoka 主题的原因,在迁移过程中遇到了很多问题,只能通过一些临时的方法来解决,造成了维护上的困难。这也最终让我下定决心更换到新的 ShokaX 主题。

一段时间前曾经尝试过切换到 ShokaX 主题,但是当时这个新主题也还未稳定,存在一些问题,加之工作太忙,没时间抽空完成迁移。最近 ShokaX 主题也算稳定了下来,于是趁着在新电脑上搭建环境的机会,正好一并迁移过来。

按照 ShokaX 自己的说法,它是 “ Shoka 的一个二次开发版(算精神续作),致力于提高性能和优化魔改体验,诞生原因是目前 Shoka 已经三年没有更新了,积压了大量 BUG 和功能请求。”

本篇文章就是对迁移过程中问题的一个记录,便于之后复现博客环境。

# 第三方工具

# Git

这次新环境的网络遇到些问题, Git 仓库总是无法拉取。

首先是报错 port 22 connection refused ,这个参考外网的一个办法[1]解决了。其做法是在 ~/.ssh/config 中添加如下配置,让 Git 连接走 443 端口:

# GitHub config
Host github.com
    Hostname ssh.github.com
    Port 443
    User git

上述问题解决后,一段时间能够正常工作,后来又遇到问题,这次换 443 端口也拒绝连接请求了…。最后配置了 WSL 环境的代理之后才总算是告一段落。

具体而言是添加如下环境变量:

export hostip=$(ip route show | grep -i default | awk '{ print $3}')
export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"

也可以在 .bashrc 或者 .zshrc 等环境配置文件中添加,这样每次启动之后就会自动设置代理。这里的端口注意修改为自己代理软件对应的端口。这里主要参考了一篇 WSL2 环境使用 Clash 代理的记录[2]以及微软官方 WSL 使用命令说明[3]

# Node.js

然后是 Node.js 安装。这里推荐使用 nvm [4] 这个软件包来管理 Node.js 的环境。

如果想使用其他方法安装,可以参考相关博客[5]

首先执行以下命令安装 nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

注意版本号可能会有差别。

然后初始化环境:

source ~/.zshrc

使用 bash 的话就是 source ~/.bashrc

nvm list-remote  # 查看 NVM 哪些版本的 Node 可用
nvm install --lts  # 下载 lts 最新版
# 验证版本
node -v
npm -v

# ShokaX 主题安装

ShokaX 官方推荐使用 pnpm 管理包,因此需要先安装:

npm install -g pnpm

ShokaX 的官方文档[6]中有详细的安装说明。如果不想折腾,那么可以选择其中的第一种方式,所谓 “ShokaX 即食罐头”:

git clone https://github.com/theme-shoka-x/shokax-can --depth=1
cd shokax-can
pnpm install
hexo s # 如果报错更换为 pnpm dlx hexo s

我因为有之前写的文档,所以采用 Git 安装的方式,将 ShokaX 主题安装到 themes 文件夹下:

cd themes
git clone https://github.com/theme-shoka-x/hexo-theme-shokaX.git # 可替换为你自己的项目
cd shokax
node ./toolbox/compiler.mjs
cd ../..
hexo s # 或 pnpm dlx hexo s
node ./themes/shokax/toolbox/hoistdep.mjs

上述 node 命令执行中可能会缺少一些依赖,直接安装即可:

# 安装 node 执行命令依赖
pnpm install esbuild
pnpm install glob
# 安装主题依赖
pnpm install

# ShokaX 主题配置

主题配置主要参考 ShokaX 的官方文档[6:1]中的配置相关部分,其中注意以下配置:

syntax_highlighter: false

hexo 大于等于 7.0.0-rc1 的时候需要按照上面的方式设置,否则可能代码块渲染不对。

此外, ShokaX 中的某些图片资源存放在了 assets 文件夹而非原来的 images 文件夹,如果有图片链接出现了问题,可以 F12 浏览器工具查看图片是否路径正确。

其他的配置基本上是从原来的 Shoka 配置中复制而来。

# 重新部署 Vercel

在本地部署之后,发现评论系统的无法访问到后端的地址。经过排查发现是 Vercel 部署的评论后端和当前主题使用的 waline 版本不匹配导致的。新版的 waline 在请求链接中会添加 /api 的部分,而原来的版本中则没有,因此访问会产生 404。解决方法即用新版本 waline 重新部署。具体部署步骤可以查看之前的文章《从 Valine 迁移到 Waline》

记得复制环境变量以及添加域名。

# 一键部署

一键部署需要安装 hexo 的工具:

pnpm install hexo-deployer-git

并在配置文件中配置部署的仓库信息:

deploy:
  type: git
  repo: https://github.com/YangLinzhuo/yanglinzhuo.github.io
  branch: master

搭建完成并部署到 GitHubPages 之后发现网页白屏,排查发现是生成的 index.html 文件为空[7]。重新生成部署后解决。

# 修改主题

排查中顺便修改了一下主题内容 themes/shokax/layout/_partials/post/footer.pug

div(class="meta")
    if date(post.date) !== date(post.updated) || time(post.date) !== time(post.updated)
        span(class="item")
            span(class="icon")
                i(class="ic i-calendar-check")
            span(class="text")
                != __('post.edited') + __('symbol.space')
            time(title=__('post.modified') + __('symbol.colon') + full_date(post.updated) itemprop="dateModified" datetime=moment(post.updated).format())
                != date(post.updated)
    if theme.twikoo.enable || theme.waline.pageview
        span(class="item")
            span(class="icon")
                i(class="ic i-eye")
            span(class="text")
                !=__('footer.total_views') + __('symbol.colon')
            - var prefixedPath = post.path.startsWith('/') ? post.path : '/' + post.path
            span(id="twikoo_visitors" class="waline-pageview-count" data-path=prefixedPath) 正在加载...
    != shokax_inject('postMeta')

  1. How to fix “connect to host github.com port 22: Operation timed out” | BackEndTea ↩︎

  2. WSL2 使用 clash for windows 代理 ↩︎

  3. 使用 WSL 访问网络应用程序 | Microsoft Learn ↩︎

  4. nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions ↩︎

  5. Ubuntu 22.04 安装 NodeJS - 槑孒 - 博客园 ↩︎

  6. 安装 ShokaX | ShokaX Docs ↩︎ ↩︎

  7. Hexo+github 搭博客,搭完后访问发现白屏了,什么也没有。_hexo 部署后网站空白 - CSDN 博客 ↩︎

总访问量:加载中...更新于

请我喝[茶]~( ̄▽ ̄)~*

Linn 微信支付

微信支付

Linn 支付宝

支付宝