Hexo博客系列:静态博客
图
静态博客网页生成器,相较于其他生成器来说速度较快,功能相对完善,官网有较多的主题和插件来丰富网站展示。本文使用Hexo版本为6.3.0,记录Hexo在使用过程中涉及的知识和遇到的问题

Hexo安装

Hexo静态博客生成器需要Node.js环境,官网建议使用Node.js 12.0及以上版本,同时需要安装Git来进行代码管理

// 默认安装最新的版本
npm install hexo-cli -g
// 指定版本进行安装
npm install -g hexo@6.3.0

这里的-g表示全局安装(系统任何地方可使用),不建议局部安装(仅项目文件夹中可用),局部安装无法直接使用hexo命令,需要配置环境变量,较为复杂,安装完成后可以使用npm view hexo version查看安装的版本

然后在某个文件夹中打开终端执行hexo init即可初始化一个博客模板,使用hexo s就能运行,之后的一切操作都是在这个模板上进行,其中

  • source/_posts;该文件夹下放文章的Markdown文件
  • themes:该文件夹下放主题,可在Hexo官网中找到
  • _config.yml:该文件为配置文件

使用hexo init初始化文档项目时可能因为网络原因较为慢(国外网址),建议多尝试几次

Hexo相关命令

  • 项目生成:hexo init [name]
  • 本地启动:hexo s
  • 本地打包:hexo g
  • 清除打包:hexo clean
  • 部署网站:hexo d
  • 创建页面:hexo n page [name]

npm相关命令

  • 查看本地Hexo版本:npm view hexo version
  • 查看已发布的Hexo版本:npm info hexo versions
  • 卸载Hexo:npm uninstall -g hexo-cli
  • 查看所有全局安装插件:npm ls -g

网站信息配置

配置文件为目录下_config.yml注意该文件的改动需要重新执行hexo s命令才会生效

# Site
title: 范先生                      # 网站名称
subtitle: 因为热爱,所以追求        # 副标题
description: 坚持学习新的知识       # 描述
keywords: 博客                     # 网站关键字
author: FanJun                     # 作者
language: zh-CN                    # 语言
timezone: ''

个人网址

url: https://fanmr.cn

用于版权声明等情况,注意使用httphttps开头

永久链接

permalink: /article/:year:month:day:hour:minute:second.html

默认的文章路径为:year/:month/:day/:title/,即文章发布时间加文章名字,如果文章的名字有所调整,那么文章原有的链接就无法访问该文章,对于收藏和分享来说是不友好的

以上方式将文章的链接改为了文章发布时间,只要不对发布时间做调整,文章就可以被永久访问到

文章创建及格式

文章放在source/_posts下,采用Markdown语法格式,可以随意创建文件夹,文章的完整格式如下:

---
title: 文章名
date: 2013-05-29 07:56:29     # 发表日期
updated: 2016-04-06 14:58:03  # 更新日期
categories: 随笔              # 文章分类
tags:                         # 标签,单个可直接指定
  - tag1
  - tag2
photos:                       # 文章头部展示图片,单个可直接指定
  - URL1
  - URL2
---

# 正文从这里开始
# 使用markdown语法

阅读全文

在文章合适的位置加上分割标志,在VsCode编辑器中可以使用CTRL+/快速打出注释

<!--more-->
以下内容不会展示在首页

多级分类

在文章的头部信息中指定

categories:
  - 随笔
  - Hexo

本地图片

默认情况下发现本地图片是无法显示的,网上的解决方案大部分都是使用hexo-asset-image插件,对图片的路径进行正常显示。但是我发现source下非_posts的目录是被打包的,利用这个特性,即可实现本地图片的使用

source下创建图片目录,如images,将图片放入其中,在引用的文章中直接使用Markdown的图片语法即可,如:

// 绝对路径(仅网站可用)
![](/images/20211227093201.png)
// 相对路径(不影响编辑器直接查询文章),VsCode会提示
![](../../images/20211227144740.png)

部署

需要先安装部署插件

npm install hexo-deployer-git

然后配置

# Deployment
deploy:
  type: git
  repo: https://github.com/fanmore/fanmore.github.io
  branch: main

最后使用hexo d就能将public中的文件推送到仓库了

VsCode终端执行hexo报错

在VsCode的控制台执行hexo命令报错,出现以下信息:

hexo : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\hexo.ps1,因为在此系统上禁止运行脚本有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_P 
olicies
所在位置 行:1 字符: 1
+ hexo -v
+ ~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

系统搜索power shell,以管理员身份运行,执行set-ExecutionPolicy RemoteSigned,输入A回车即可

VsCode写Mardown

使用VsCode进行Markdown写作时,个人其中使用的一些必要插件:

  • Markdown All in One:VsCode对Markdown的语法支持
  • Insert Date String:插入时间字符串,用在文章的创建时间和更新时间等(Ctrl + Shift + i
  • Markdown Image:直接粘贴图片到本地(或Githud图床),建议改为时间戳命名、html格式,便于定义图片宽度
  • Image preview:能直接预览图片,鼠标移动到图片上即可,还能定位图片位置和打开文件夹

同时使用Snipaste进行截图操作

VSCode设置代码片段

利用代码片段生成头部信息,在设置 --> 代码片段 --> 新建全局中加入:

"Print to console": {
  "prefix": "info",
  "body": [
    "---",
    "title: name",
    "date:${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE} ${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}",
    "updated:${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE} ${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}",
    "categories: 分类",
    "tags:",
    "  - tag1",
    "---",
  ],
  "description": "头部信息"
}

但是遇到在Markdown文件中无法使用代码片段问题,在设置中搜索files.associations并创建项"*.md": "markdown",然后重启

侧边字体修改

找到文件VSCode安装路径 + resources\app\out\vs\workbench\workbench.desktop.main.css,搜索关键字.part>.content{,在13px后面添加;font-family: Helvetica;,然后重启

关于图床

Markdown Image配置Github图床示例:

图

Markdown Image会自动转换为CDN地址

Token在Github头像功能的SettingsDeveloper settingsPersonal access tokensTokens创建

图

记得重启VsCode,同时注意一个仓库容量1G,单个文件不能超过100M

Github Pages自定义域名

域名的自定义在开启Pages的仓库中即可绑定,但是前提是添加进了Github的域名管理,点击我的头像SettingsPages中根据提示添加domains并校验成功,即可使用

同时注意,绑定自定义的域名会在部署仓库下多一个CNAME文件,别忘了放入博客中

部署阿里云OSS

解决访问慢问题,部署插件:hexo-deployer-aliyun

阿里云的配置:

  • 创建Bucket
  • 开启静态页面(必须开启子目录首页)
  • 配置域名管理

阿里云的Region查阅:https://www.zyku.net/aliyun/2017.html

使用感受:对于图片过大的情况会报错,因为上传机制是上传所有文件,而非Git的更新