# 我的第一篇博客


这些是我与DeepSeek的对话记录

<!--more-->

## hugo 部署方案

没问题，用Hugo在Arch Linux上搭建博客，再配合自动化部署，是套很成熟的方案。我帮你把整个工作流梳理了一下，可以根据偏好选择部署平台。

### 1. 本地环境搭建 (Arch Linux)

首先安装Hugo（建议安装`hugo`扩展版以支持Sass/SCSS）和Git：
```bash
sudo pacman -S hugo git
```
安装后验证：`hugo version`

### 2. 创建并配置博客站点

```bash
hugo new site my-blog
cd my-blog
git init
```

然后**添加一个主题**（以流行的PaperMod主题为例）：
```bash
git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
```
在`hugo.toml`中设置`theme = 'PaperMod'`。

新建第一篇文章测试：
```bash
hugo new posts/my-first-post.md
```
本地预览：`hugo server -D`，访问 `http://localhost:1313` 查看效果。

### 3. 在GitHub上创建仓库并推送

在GitHub新建一个仓库（命名为 `你的用户名.github.io`）。然后关联本地并推送：
```bash
git remote add origin git@github.com:你的用户名/你的用户名.github.io.git
git branch -M main
git add .
git commit -m "Initial commit"
git push -u origin main
```

### 4. 自动化部署工作流

你可以选择以下任一平台进行部署。无论选哪个，都建议先在`static`目录下创建一个`CNAME`文件（无扩展名），里面只写你的域名（如`blog.example.com`）。

#### 方案A：使用GitHub Pages（最直接）

1. **启用Pages**：在仓库 `Settings > Pages` 中，将“Source”改为 **“GitHub Actions”**。
2. **创建Workflow文件**：在项目根目录创建 `.github/workflows/hugo.yaml`，粘贴Hugo官方提供的工作流配置。
3. **推送触发部署**：`git add . && git commit -m "Add GitHub Actions workflow" && git push`。之后可在仓库的“Actions”选项卡查看进度。

#### 方案B：使用Netlify（功能丰富）

1. **连接仓库**：登录Netlify，选“Add new site” -> “Import an existing project”，连接你的GitHub仓库。
2. **配置构建设置**：构建命令填 `hugo --minify`，发布目录填 `public`。
3. **部署**：点击“Deploy site”。之后每次推送都会自动触发构建。

#### 方案C：使用Surge.sh（极其轻量）

1. **安装Surge**：`npm install --global surge`。
2. **构建并部署**：`hugo --minify` 然后进入`public`目录执行 `surge`，按提示注册即可获得一个 `*.surge.sh` 的临时域名。
3. **持续部署**：可编写一个简单的`deploy.sh`脚本，将 `hugo` 和 `surge --domain your-domain.surge.sh` 放在一起。

### 5. 绑定自定义域名

*   **GitHub Pages**：在仓库 `Settings > Pages` 的“Custom domain”处填入你的域名，并确保`static/CNAME`文件内容一致。然后在域名注册商处添加CNAME记录指向 `你的用户名.github.io`。
*   **Netlify**：在站点 `Site settings > Domain management` 中添加自定义域名。Netlify会指导你添加`A`或`CNAME`记录，并自动帮你配置免费的HTTPS证书。
*   **Surge.sh**：部署时使用 `surge --domain your-domain.com`。在你的DNS提供商处将域名指向 `na-west1.surge.sh`。

### 💎 总结建议

*   **追求极致简单**：选 **GitHub Pages** + GitHub Actions，一切都在GitHub生态内完成。
*   **想要更多功能**（如分支预览、表单处理）：选 **Netlify**，配置更灵活。
*   **想要最快部署**：选 **Surge.sh**，命令行操作极其轻量和迅速。

建议先从GitHub Pages开始，这是最主流也最方便的方案。

## hugo 项目初始化

可以的，仓库名不是固定的 `username.github.io` 完全没问题，这属于 **Project Pages** 站点。部署稍有不同，下面是完整步骤：

### 1. 初始化站点并安装LoveIt主题

在Arch Linux终端中执行：
```bash
# 创建新站点
hugo new site hugoblogloveit
cd hugoblogloveit

# 初始化Git仓库
git init

# 添加LoveIt主题作为Git子模块
git submodule add https://github.com/dillonzq/LoveIt.git themes/LoveIt
```

### 2. 配置站点

将主题的示例配置复制到站点根目录：
```bash
cp -r themes/LoveIt/exampleSite/* .
```
然后编辑根目录下的 `config.toml` 文件：
```toml
baseURL = "https://你的用户名.github.io/hugoblogloveit/"  # 注意末尾斜杠
title = "我的技术博客"
theme = "LoveIt"
```

### 3. 在GitHub上创建仓库并推送

在GitHub新建一个公开仓库，命名为 `hugoblogloveit`（**不要**勾选“Add a README file”）。

```bash
git remote add origin git@github.com:你的用户名/hugoblogloveit.git
git branch -M main
git add .
git commit -m "Initial commit with LoveIt theme"
git push -u origin main
```

### 4. 配置GitHub Actions自动部署

在项目根目录创建 `.github/workflows/deploy.yml`：
```bash
mkdir -p .github/workflows
touch .github/workflows/deploy.yml
```

将Hugo官方工作流粘贴进去，内容可参考 [Hugo官方文档](https://gohugo.io/host-and-deploy/host-on-github-pages/)。

提交并推送：
```bash
git add .github/workflows/deploy.yml
git commit -m "Add GitHub Actions workflow for Pages"
git push
```

### 5. 在GitHub上启用Pages

1. 进入仓库 `Settings` → `Pages`
2. **Source** 选择 **“GitHub Actions”**
3. 等待几分钟，Actions会自动构建并部署

> **访问地址**：`https://你的用户名.github.io/hugoblogloveit/`

### 6. 绑定自定义域名

假设你的域名是 `blog.example.com`：

**① 添加CNAME文件**
在 `static` 目录下创建 `CNAME` 文件（全部大写）：
```bash
echo "blog.example.com" > static/CNAME
```
提交推送后，CNAME文件会被构建到 `public` 目录。

**② GitHub Pages设置**
进入仓库 `Settings` → `Pages`，在“Custom domain”填入 `blog.example.com`。

**③ DNS解析**
在域名注册商处添加CNAME记录：
| 记录类型 | 主机记录 | 记录值 |
|---|---|---|
| CNAME | blog | 你的用户名.github.io |

> **注意**：通过GitHub Actions部署时，`static/CNAME` 文件可能不会被自动处理，建议在 `Settings → Pages` 的Custom domain中手动设置。

### 7. 日常写作与发布

```bash
# 新建文章
hugo new posts/我的新文章.md

# 本地预览
hugo server -D

# 满意后提交推送，触发自动部署
git add .
git commit -m "Add new post"
git push
```

### 💎 关键点总结

- **仓库名任意**：不要求 `username.github.io`，访问路径会多一层仓库名
- **部署方式**：必须使用 **GitHub Actions**（无法像User Pages那样直接从分支部署）
- **baseURL**：必须包含仓库名，如 `https://用户名.github.io/hugoblogloveit/`
- **自定义域名**：建议在Pages设置中直接填写，而不是仅依赖CNAME文件

现在你的博客应该可以通过 `https://你的用户名.github.io/hugoblogloveit/` 访问了！

## hugo 项目
针对你的 `hugoblogloveit` 项目，建议在项目根目录的 `.gitignore` 文件中添加以下内容，以避免将构建产物等不必要的文件提交到仓库中。

### 核心Hugo配置
这是必须添加的部分，用于忽略Hugo的构建输出和缓存。

```gitignore
# Hugo构建输出目录
/public/

# Hugo资源缓存目录
/resources/_gen/

# Hugo构建锁文件
.hugo_build.lock

# Hugo生成的统计文件
hugo_stats.json

# Hugo资源管道生成的JS配置
/assets/jsconfig.json
```

### 可选优化项
根据你使用的特性，可以考虑添加：

```gitignore
# 如果你使用了Node.js (npm/yarn) 管理前端资源
/node_modules/

# 完整的resources缓存目录（有时可缓存以加速CI构建）
/resources/
```
> **注意**：`/resources/` 目录是否忽略存在争议。在CI/CD（如GitHub Actions）环境中，通常建议忽略它，让其在构建时重新生成。

### 操作系统和编辑器文件
为防止与系统或编辑器相关的临时文件被提交，建议一并添加：

```gitignore
# macOS
.DS_Store

# Vim
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
Session.vim
.netrwhist
*~
tags
[._]*.un~

# Windows
Thumbs.db
```

### 获取完整模板
你也可以直接使用GitHub官方维护的Hugo模板。在项目根目录执行：
```bash
curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/refs/heads/main/community/Golang/Hugo.gitignore
```

**总结**：核心是忽略 `/public/` 和 `/resources/_gen/` 这两个目录。你可以将以上内容整合到你的 `.gitignore` 文件中。

