Jeffrey Wang
文章93
标签162
分类12
使用 Hexo 在十分钟内创建项目官网

使用 Hexo 在十分钟内创建项目官网

前言

蛇年春节在即,在这里祝大家蛇年大吉,财源广进!!!🧨🧨🧨

博主就乘着节前还有点业余时间继续搞一搞开源项目,背景是大概在 2025 年元旦,我使用 Cursor + DeepSeek V3 快速的写完了一个开源项目的核心功能,也就是 LiberSonora - 一个 AI 赋能的、强大的、开源有声书工具集。

但这个项目的相关介绍、愿景、功能、API 接口等等信息很长,放在 README 里边非常不雅观,放 Wiki 里边又觉得不够好看,所以还是决定给这个项目搞一个官网,把 README 里边冗杂的各种信息分门别类都放到项目官网里,以及未来的更新日志都可以在官网中以博客的方式体现。

想到这里,做一个项目官网需要的核心功能就出来了:

  • 简单明了,主页不能直接是一个文章列表,主要的视觉集中处需要有充足的内容空间介绍项目情况
  • 侧边栏菜单需要支持独立页
  • 需要支持友情链接配置
  • 支持点击放大图片
  • 移动端访问友好
  • 支持接入 Google Analysis 等分析工具
  • 展示网站访问 PV UV

项目官网预览:https://libersonora.github.io/
官网开源地址:https://github.com/LiberSonora/libersonora.github.io

完全配置完是这样的展示效果,且在提交后会自动打包内容更新网站:

​image

技术选型

目前并不打算为这个开源项目单独申请域名,所以在部署上就打算使用 Github Pages 和自带的 github.io 域名。

Github Pages 本身是内置支持 Jekyll 的,Jekyll 是一个静态网站生成器,可以把 Markdown 文档转换为静态网站 html,进而在 Github Pages 中部署。

这个工具本身没有问题,用的人比较多,但在 Github Pages 中内置支持的模板比较少,可以再这个链接中查看,我挨个点进去看了,都只适合做博客,不适合做项目官网。

​image​

如果跳出内置的主题,用自定义 actions 打包的话,就不用限定在 Jekyll 这一个静态网站生成器上。

最后经过手工挑选+Deepseek R1 的推荐,最终选择了 Hexo + NexT 主题来完成这个功能

​image​

Hexo 文档:hexo.io/zh-cn/docs/

Hexo NexT 主题文档:theme-next.js.org/docs/

操作记录

整体思路如下:

  • 创建一个 github pages 仓库
  • 安装 hexo 、hexo-next 主题
  • 调整 hexo 和主题配置

Github Pages 配置

跟着这个指引 Quickstart for GitHub Pages 就可以初始化好一个网站仓库,接下来往这个仓库填充内容就好了。

创建一个新的仓库​

​image​

仓库名称为 [project/username].github.io

需要注意的是,如果项目名称是驼峰的,在创建仓库的时候需要都转为小写,比如我的开源项目组织名字为 LiberSonora,在创建仓库时只能写 libersonora.github.io,访问地址同样也都只能是小写 https://libersonora.github.io

​image​

设置里边打开 Pages 的支持,注意这里的构建 Source 要选 github actions,如果有自己的域名可以在输入框内填写并配置解析

​image​

把仓库克隆到本地,运行如下命令进行初始化

进入到仓库目录后

1
2
3
npm i -g hexo
npx hexo init web-app
cd web-app

进入到项目目录后,跟踪为刚才新建的远程仓库

1
2
git init
git remote add origin https://github.com/LiberSonora/libersonora.github.io.git

配置 github workflow

把如下 pages.yml 放到 .github/workflows/​ 下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
name: Pages

on:
push:
branches:
- main # default branch

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
# If your repository depends on submodule, please see: https://github.com/actions/checkout
submodules: recursive
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
# Examples: 20, 18.19, >=16.20.2, lts/Iron, lts/Hydrogen, *, latest, current, node
# Ref: https://github.com/actions/setup-node#supported-version-syntax
node-version: "20"
- name: Install Yarn
run: npm install --global yarn
- name: Cache Yarn dependencies
uses: actions/cache@v4
with:
path: ~/.yarn/cache
key: ${{ runner.OS }}-yarn-cache
restore-keys: |
${{ runner.OS }}-yarn-cache
- name: Install Dependencies
run: yarn install
- name: Build
run: yarn build
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
deploy:
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

本地运行项目

1
2
yarn install
yarn server

如果一切正常,那么访问 http://localhost:4000​ 可以看到一个默认的 Hello World 页面

​image​

推送到远程,观察 Actions,一个正常的 Action 可以参考:https://github.com/LiberSonora/libersonora.github.io/actions/runs/12974707962,然后就可以在 [name].github.io 上访问到刚才配置的网站了

1
2
git add .
git push origin main

​image​

Hexo 配置

在网站整体跑通的情况下,下一步就是 hexo 和 hexo-next 的配置了

首先执行如下命令安装 next 主题

1
yarn add hexo-theme-next

然后复制一份配置模板到项目目录

1
cp node_modules/hexo-theme-next/_config.yml _config.next.yml

Hexo 中本身有一个 _config.yml​,只需配置一下 Site 、URL、Theme 相关的属性,成品配置参考 _config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Site
title: LiberSonora
subtitle: '一个 AI 赋能的、强大的、开源有声书工具集'
description: 'LiberSonora 寓意“自由的声音”,是一个 AI 赋能的、强大的、开源有声书工具集,包含智能字幕提取、AI标题生成、多语言翻译等功能,支持 GPU 加速、批量离线处理'
keywords: 'subtitle,audio-books,subtitles-generator,llm,ollama,translate,deepseek'
author: LiberSonora
language: zh-CN
timezone: 'Asia/Shanghai'
# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: https://libersonora.github.io/
# ...
theme: next
# ...

然后是 next 主题的配置,可以参考他家的官方文档 theme-settings 一步步的调试,成品配置参考 _config.next.yml

比较重要的几个配置列举如下,realfavicongenerator.net 可以做 favicon,不过里边的 16x16 32x32 多尺寸的 favcion 得在 resize.com 中二次处理下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
scheme: Gemini # Gemini 主题比较适合做项目官网
# favicon 得去 https://realfavicongenerator.net/ 做一下
favicon:
small: /favicon/favicon-16x16.png
medium: /favicon/favicon-32x32.png
apple_touch_icon: /favicon/apple-touch-icon.png
safari_pinned_tab: /favicon/favicon.svg
android_manifest: favicon//manifest.json

# Custom Logo (Warning: Do not support scheme Mist)
custom_logo: /images/logo-head.jpg
# Menu 是左侧的菜单,需要先建好单页再继续
menu:
home: / || fa fa-home
快速开始: /quick-start/ || fa fa-rocket
转换示例: /demo/ || fa fa-laptop-code
语言支持和兼容性: /support/ || fa fa-life-ring
界面功能展示: /pages/ || fa fa-file-alt
API 接口: /api/ || fa fa-code
系统要求和性能测试: /system-requirement/ || fa fa-server
# 友链
links:
作者个人博客: https://blog.wj2015.com
项目 Github: https://github.com/LiberSonora/LiberSonora
官网 Github: https://github.com/LiberSonora/libersonora.github.io
# 打赏功能
reward_settings:
# If true, a donate button will be displayed in every article by default.
enable: true
animation: true
reward:
wechatpay: /images/wechatpay.png
# 支持点击打开图片
fancybox: true
# 谷歌分析的配置
google_analytics:
tracking_id: # <app_id>
# 访客统计功能
busuanzi_count:
enable: true

创建单页的命令是 npx hexo new page [page-router]​,创建完成后在 source/[page-router]/index.md​ 中修改页面即可

置顶文章

可以使用 npx hexo new post "文章标题"​ 创建文章,也可以直接在 source/_posts​ 中新建 [router].md​,然后手动填充如下头部信息

  • title 是文章标题
  • sticky 是置顶配置,普通文章不需要,sticky 越大越靠前(这个点在文档里边没找到,翻了源代码才确认这个逻辑,所以单独拧出来提一下)
  • date 是选填的,默认会取文件的创建时间,不过我对这个系统维护的文件时间不太信任,不嫌麻烦还是自己硬编码一下比较好
1
2
3
4
5
---
title: 欢迎使用 LiberSnora
sticky: 1
date: "2025-01-26"
---

而在 next 主题中,设置了 sticky 的文章会被完整的展示到首页,所以特别适合把项目情况、愿景等重要信息放到这里,就像下面这样。

​image​

其他发版 blog、项目进展 blog 就按照同样的方法创建文章,只不过不需要配置 sticky

所有配置都完成后,再次提交到 github 并等待 actions 完成,整个网站就部署完了,还可以随个人喜好,加入评论系统、本地搜索、聊天等等功能,可以跟随 Next 主题文档按需配置,Comment System。

如果考虑国内用户访问更加友好,或者希望从 WordPress 导入文章,以及希望加上文章分类、标签等功能,以及展示的更个性一点,也可以参考我的个人博客搭建总结《Hexo 博客迁移》

总结

现在的静态网站搭建工具很完善,搭一个静态网站的时间成本很低,虽然我梳理需求、找主题、准备内容、调整模板等等事情加起来搞了一下午,但单纯上一个自己的个人站确实可以 10分钟左右搞定,Enjoy!

本文作者:Jeffrey Wang
本文链接:https://blog.wj2015.com/2025/01/27/%E4%BD%BF%E7%94%A8-Hexo-%E5%9C%A8%E5%8D%81%E5%88%86%E9%92%9F%E5%86%85%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE%E5%AE%98%E7%BD%91/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×