Windows 环境安装
-
下载拓展版(Extended version)HuGo 压缩包
NOTE: 标准版本没有 SCSS/SASS 支持
-
解压缩后,配置 PATH 环境变量,方便使用 hugo 命令
例如我的 PATH 环境变量的值是:
D:\Software\hugo_extended_0.128.0_windows-amd64
。 -
验证安装。打开 CMD 窗口,执行以下命令
1 2
D:\Java\Code\hugo>hugo version hugo v0.128.0-e6d2712ee062321dc2fc49e963597dd5a6157660+extended windows/amd64 BuildDate=2024-06-25T16:15:48Z VendorInfo=gohugoio
如果您使用V的SCode 终端,配置好环境变量后,请重启VSCode
项目初始化
-
创建你的 HuGo 项目
1
hugo new site username.github.io
-
目录介绍
- archetypes:存放内容类型的模板文件。当你使用 hugo new 命令创建新内容时,Hugo 会根据这里的模板文件生成相应的内容文件。你可以为不同的内容类型(如博客文章、页面等)定义不同的模板。
- assets:这里存放用于 Hugo Pipes 的资源文件,例如 SCSS/SASS 样式表、JavaScript 文件等。Hugo Pipes 允许你对这些资源进行处理(如编译、压缩)并生成最终的静态文件。
- content:主要存放网站的内容文件,如 Markdown 格式的博客文章、页面等。内容文件按照不同的分类和类型存放在子目录中。
- data:存放数据文件,支持 YAML、JSON 和 TOML 格式。你可以在模板中通过 site.Data 访问这些数据文件,以便在网站生成时动态加载和使用数据。
- i18n:国际化
- layouts:存放定义网站的样式,写在
layouts
文件下的样式会覆盖安装的主题中的layouts
文件同名的样式。你可以在这里定义页面模板、部分模板(如头部、脚部)、列表模板等。模板文件使用 Go 模板语言编写。 - public:存放 Hugo 生成的静态网页
- static:存放静态文件(如图片、CSS、JavaScript 文件等),这些文件不会被 Hugo 处理,而是直接复制到最终生成的网站中。静态文件在网站中可以通过 /static/ 路径访问。
- themes:存放主题文件夹。每个主题都有自己的目录,包含主题的模板、静态文件、资源文件等。你可以在
hugo.toml
或hugo.yaml
中指定要使用的主题。 - hugo.toml:网站配置文件。默认为
toml
格式,支持yaml
格式
-
启动
1 2
# -D 能看草稿文章 hugo server -D
-
预览
本地访问网站的默认 URL:http://localhost:1313/
撰写您的第一篇文章
文章分类 & 标签
当文章多了之后,content 目录会十分混乱,因此提前做好文章分类和标签很有必要~
一级分类 | 一级分类目录路径 | 二级分类 | 二级分类目录路径 | 二级分类描述 | 三级分类目录路径 | 三级分类描述 |
---|---|---|---|---|---|---|
#技术 | post\techs | #HuGo | hugo | HuGo | ||
#Markdown | markdown | Markdown使用指南 | ||||
#fanpin | fanpin | fanpin项目文档 | ||||
deployment-guides | 生产服务器环境安装及部署准备 | |||||
system-biz | fan4cloud-system-biz项目 | |||||
web | vue-pure-admin项目 | |||||
#文学 | post\literature | #中国 | post\literature\china | 国内文学 | ||
#法国 | post\literature\franch | 法国文学 | ||||
#艺术 | post\arts | #口琴 | post\arts\harmonica | 口琴曲谱、吹奏经验 | ||
#体育 | post\sports | #网球 | post\sports\tennis | 网球技术归纳 | ||
#羽毛球 | post\sports\badminton | 羽毛球球技术归纳 |
分类 | 标签名 | 标签描述 |
---|---|---|
开发语言 | Go | |
Java | ||
Python | ||
Vue3 | ||
项目文档 | FanPin | |
HuGo | ||
GitHub Pages | ||
DevOps | ||
Linux | ||
Ubuntu | ||
Markdown |
布局文件创建
在没有主题的情况下,需要手动创建一些基本的布局文件。步骤如下:
- 在 layouts 目录中,创建一个名为 index.html 的文件:
1 2 3 4 5 6 7 8 9 10 11 12
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>{{ .Title }}</title> </head> <body> <h1>{{ .Title }}</h1> <div>{{ .Content }}</div> </body> </html>
- 创建 layouts/_default/single.html 以渲染单个文章页面:
1 2 3 4 5 6 7 8 9 10 11 12
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>{{ .Title }}</title> </head> <body> <h1>{{ .Title }}</h1> <div>{{ .Content }}</div> </body> </html>
文章创建
|
|
预览文章
http://localhost:1313/post/arts/harmonica/曲谱/
更多文章撰写笔记相关文章:
1. Markdown写作指南
发布GitHub Pages·
创建两个GitHub Repository
- 第一个:
HTML 文件远程仓库
,存储HuGo项目构建后生成 HTML 文件。Repository name必须是你的用户名.github.io
。比如我的命名为pierai.github.io
- 第二个:
HuGo项目远程仓库
提交HuGo项目代码至HuGo项目远程仓库
- 在提交前先配置
.gitignore
文件:1 2 3 4
public resources assets/jsconfig.json .hugo_build.lock
- 初始化远程仓库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# 进入项目根目录 d: cd D:\Java\Code\hugo # 初始化 Git 仓库 git init # 初始化 Git 仓库时创建的默认主分支名是 master。将 git init 创建的 master 修改成 main git init -b main # 如果这一步错过了修改分支名,推送前仍可修改本地分支名:git branch -m master main # 添加远程仓库 git remote add origin https://github.com/username/repository.git # 提交所有文件 git add . git commit -m "Initial commit" # 如果你的远程仓库中已经有一些提交,而本地仓库中没有这些提交(这通常发生在远程仓库中有初始的 README.md 文件或 .gitignore 文件。),需要执行以下命令: git pull origin main --allow-unrelated-histories # NOTE: 本地分支名要和远程分支对应 # 推送到远程仓库 git push -u origin main
构建并提交至HTML 文件远程仓库
- 执行
hugo server -D
。不需要草稿文章则去掉-D
参数。NOTE: 草稿文章,也就是
.md
文件头部Frontmatter Configs
中draft: false
的文章。 - 在项目根目录运行
hugo
命令将 Markdown 文件生成 HTML 文件到public
文件夹。1 2 3 4
# 进入项目根目录下的public文件夹 cd public # 重复上面的Git操作,将public下的所有文件提交到 HTML 文件仓库
预览
浏览器访问: https://${你的GitHub用户名}.github.io/
[可选]绑定个人域名
-
获得GitHub域名解析出的IP
1
nslookup ${你的GitHub用户名}.github.io
示例:
-
打开你的域名管理控制台,新增域名解析记录,其中:
- 一条CNAME记录
- 第一步域名解析出几个IP就配置几条A记录
主机记录 记录类型 记录值 blog CNAME 你的GitHub Pages访问地址,比如我的是<pierai.github.io>. @ A 第一步解析出的IP 1 @ A 第一步解析出的IP 2 @ A 。。。 @ A 第一步解析出的IP N 示例:
NOTE: 这里由于我的子域名负载均衡数量超出限制,A记录只配置了两条
-
GitHub Settings配置
- 打开GitHub
HTML 文件远程仓库
Settings配置 - 配置你的域名并Save
- 打开GitHub
-
预览
访问: https://你的域名/
这里我访问自己博客的域名是:https://blog.somi.love/
扩展
配置stack主题
Q & A
提交HTML 文件远程仓库
代码冲突了?
删除public
文件夹, 重新hugo
、hugo server -D
、提交public
文件夹到仓库
更新 hugo.yaml 或 hugo.toml 文件配置后没生效?
执行以下命令
|
|
这个命令会执行以下操作:
- 删除 public 目录中的所有文件和子目录。
- 根据你的内容和模板生成最新的静态文件。
- 将生成的静态文件输出到 public 目录。
详细说明
- 清理目标目录:在构建网站之前,Hugo 会删除目标目录中的所有内容,确保没有旧的或不需要的文件。
- 构建网站:Hugo 会根据你的内容、模板、配置等生成最新的静态文件。
- 输出到目标目录:生成的静态文件会输出到目标目录(默认是 public)。
适用场景
使用 --cleanDestinationDir
特别适用于以下场景:
- 确保目录干净:确保发布目录中的文件都是最新的,没有遗留的旧文件,避免网站出现未更新或多余的文件。
- 自动化部署:在自动化部署脚本中使用,确保每次部署都从一个干净的目录开始,避免潜在的问题。
- 调试和开发:在开发过程中,确保每次构建都是干净的,方便调试和测试。