最近折腾了个网站,用的Hugo+Vercel。
踩了些坑,记录一下。
为什么选这个组合
Hugo:静态网站生成器,速度快,主题多。 Vercel:部署平台,免费额度够用,自动部署。
简单说就是:Hugo管内容,Vercel管上线。
不用买服务器,不用配环境,push代码自动部署。
挺香的。
完整流程
第一步:Hugo初始化
# 安装Hugo(Mac用brew,其他看官网)
brew install hugo
# 创建新站
hugo new site my-site
cd my-site
第二步:选主题
Hugo社区有很多主题,我用的Paper。
git init
git submodule add https://github.com/nanxiaobei/hugo-paper themes/paper
主题的文档要认真看。配置不对,样式会出问题。
第三步:content结构
Hugo的文章放在content/posts/目录下。
hugo new posts/my-first-post.md
会生成一个带frontmatter的md文件。
第四步:config配置
hugo.toml是配置文件。
基础配置:
baseURL = 'https://example.com/'
languageCode = 'zh-cn'
title = '我的网站'
theme = 'paper'
中文站需要配置:
defaultContentLanguage = 'zh-cn'
hasCJKLanguage = true
不然英文站默认间距,中文排版会很难看。
第五步:Vercel导入
- 把Hugo项目推到GitHub
- Vercel里Import Project
- 选Hugo模板,Vercel会自动识别
关键配置:
# Build Command
hugo
# Output Directory
public
第六步:自动部署
配置好了,每次push到GitHub,Vercel自动构建部署。
不用手动hugo build,不用手动上传。
push之后等一两分钟,网站就更新了。
踩过的坑
坑一:中文slug问题
Hugo默认用文件名作为URL。
文件名是中文,URL就是中文编码。
我建议在frontmatter里手动指定slug:
---
title: "我的文章"
slug: "my-first-post"
---
英文slug看着干净,也不容易出问题。
坑二:frontmatter不规范
这个我单独写过一篇,详见[hugo-frontmatter-trap.md]。
简单说就是:格式错了文章不显示。
YAML缩进、引号、日期格式,都要注意。
坑三:draft:true
新建的文章默认是草稿。
draft: true # 草稿,不显示
draft: false # 正式,发布
发布前记得改成false。
坑四:本地预览
每次改完想预览:
hugo server --buildDrafts
--buildDrafts参数会显示草稿文章。
我的配置
给有需要的朋友参考。
hugo.toml:
baseURL = 'https://your-site.vercel.app/'
languageCode = 'zh-cn'
title = 'AI经验图书馆'
theme = 'paper'
defaultContentLanguage = 'zh-cn'
hasCJKLanguage = true
enableRobotsTXT = true
[params]
description = "AI实践经验分享"
author = "niorn"
[taxonomies]
tag = "tags"
category = "categories"
Vercel的Build Command写hugo,Output Directory写public。
搞定。
总结
Hugo+Vercel是个不错的组合。
Hugo负责生成,Vercel负责部署。
自动部署是真的香。写完push,网站就更新了。
主要避坑点:
- 中文站记得加CJK配置
- frontmatter格式要规范
- draft改成false再发布
- slug建议用英文
剩下的,照着主题文档来就行。