搭建Hexo博客遇到的问题


1. hexo 如何删除已经不存在的“分类”

因缓存的问题,重新清理执行脚本即可,如下是 清理-生成-发布 命令

    hexo clean && hexo g && hexo de

2. 解决Hexo部署报错:Error: Spawn failed

在使用Hexo部署你的博客到GitHub时,你可能会遇到一个错误提示:Error: Spawn failed
这个错误往往是因为本地Git的提交记录与GitHub上的记录不同步导致的。

2.1 问题诊断

部署错误可能发生在执行 hexo g -d命令时,由于.git目录中文件的不统一而引发。发生这种情况可能是因为之前的部署有些失败或误操作导致本地和远程仓库历史记录不一致。

2.2快速修复指南

这里介绍一个快速修复的步骤:

  1. 检查提交记录差异
    打开命令行,先检查你在.deploy_git目录中的提交记录。

    cd .deploy_git
    cat .git/logs/HEAD
    

    记录下你看到的最后一个提交的commit代码(Hash),如280a7fdd46fcfd7d34e652aec15523dcd247fac8。

  2. 对比GitHub提交记录
    访问GitHub Pages服务所关联分支的提交历史,回顾最近一次提交的标识。该界面URL的格式通常是https://github.com/username/repository/commits/branch。例如: https://github.com/lxl80/blog/commits/gh-pages

  3. 确认并同步记录
    如果你发现本地的记录和远程的记录出现不一致,你需要将本地记录同步到远程记录的状态。

    执行下列命令,将本地提交记录硬重置为GitHub上最新的提交标识:

    git reset --hard f085038efdf79546c09641d37b2a2429c1ae8e60
    

    替换 f085038efdf79546c09641d37b2a2429c1ae8e60 至远端仓库的实际最后一次提交标识。

  4. 重新部署
    完成上述步骤后,你可以再尝试重新部署你的Hexo博客。

    hexo g -d
    

3. 如何在您的网站上悬挂灯笼庆祝新年

为了庆祝新年并给您的网站添加一些节日气氛,您可以利用一个名为LanternJS的JavaScript库。这个库能够让您快速地在网站上加上漂亮的节日灯笼特效。

3.1 集成灯笼特效

首先,您需要了解LanternJS这个库的配置,并且获取所需文件的链接。LanternJS的项目页面在GitHub上可以找到,地址是:

参考该文档,您就可以准备好将灯笼加入到您的网站之中。下面是整合这个库到您Hexo主题所需关键步骤。

3.2 添加脚本到Hexo主题

您想要将代码添加到您的Hexo主题的 header.ejs 文件。该文件的路径一般是 hexo-theme-matery/layout/_partial/header.ejs

下面是灯笼功能的HTML和JavaScript代码片段。在文件合适的位置插入以下代码:

<script src="https://cdn.jsdelivr.net/npm/hexo-lanternjs@1.0.0/lantern.min.js"></script>
<div id="lantern-wrapper" class="lantern-wrapper" no-select></div>
<script>
	let lantern = new Lantern('lantern-wrapper', {
		date: {								// 日期配置
			from: '12-20',					// 灯笼开始出现的日期
			to: '3-31'						// 灯笼消失的日期
		},
		position: {						    // 灯笼的位置配置
			zIndex: 9999,					// 灯笼的层级
			lanternRL: [10, 150, 150, 10],	// 灯笼距离页面左右边缘的距离
			lanternTop: 0					// 灯笼距离页面顶部的距离
		},
		content: '新年快乐'					// 灯笼内展示的内容,限制为四个字符
	});
</script>

3.3 配置和调整

代码中为灯笼设置了几个可配置项:

  1. date 字段用于设定开始和结束横挂灯笼的时间。
  2. position 字段包括 zIndex(决定灯笼在页面中的层级)和 lanternRL(决定横挂灯笼距离页面边缘的水平距离)。
  3. content 字段用于设置在每个灯笼中心显示的讯息,像“新年快乐”。

插入代码并配置后,记得保存header.ejs文件,重新生成您的静态页面并部署。

就这样!通过简单的几步操作,您的网站将在设定的日期范围内展现悦目的灯笼特效,给访客带来新年的风情。祝您新年快乐,网站访问量飙升!

4. Hexo 跳过渲染

当您在 Hexo 博客中工作时,有时可能会需要更细致地控制内容的渲染过程。默认情况下,Hexo 会渲染 source 目录下的所有文件。但如果您希望某些 HTML 或 Markdown 文件不被渲染,如何处理呢?以下是一些方法,帮助您实现对特定文件或目录渲染行为的控制。

4.1方法一:使用 Front Matter

当您需要跳过单个 HTML 或 CSS 页面的渲染时,可以在该页面对应 index.md 文件的 Front Matter(YAML Front Matter 是 Hexo 解析 Markdown 文件时所必需的文件头部信息)中添加 layout: false,如下所示:

---
title: 'tools'
date: 2020-04-28 00:00:00
type: 'tools'
layout: false
---

通过这样的设置,您相当于告诉 Hexo 该页面使用的是自定义布局,而 layout: false 则意味着没有布局,Hexo 因此不会对这个文件进行内容渲染,而是将其内容直接输出。

4.2方法二:使用 skip_render

另一种方法是通过 Hexo 的 _config.yml 文件。在该文件中找到 skip_render 选项,并添加您希望 Hexo 在渲染过程中忽略的文件或目录的路径。下面是一个配置示例:

# 指定文件或目录以跳过 Hexo 渲染
skip_render:
  - 'tools/*'    # 表示跳过 tools 目录下的所有直接子文件的渲染
  - 'tools/**'   # 表示跳过 tools 目录及其所有子目录内的文件的渲染

配置文件中的注释描述了每种模式的功能:

  • tools/* 会匹配 source/tools 下所有直接的子文件,这些文件不会被渲染。
  • tools/** 会匹配整个目录树,因此 source/tools 文件夹中的每个文件,包括子目录中的文件,都不会经过 Hexo 渲染器的处理。

利用以上两种方法,您可以灵活地定制 Hexo 在生成静态文件过程中的特定文件或目录的渲染行为,以满足您网站的特定需求。

后续更新


文章作者: 阿坤
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 阿坤 !
  目录