Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。
安装
hugo 有两个版本,标准版和扩展版,推荐使用扩展版。
使用 scoop 安装
1
scoop install hugo-extended
注意:*目前scoop版本过低,编译最新stack主题的时候会报错,所以推荐使用下面方法安装。
下载二进制安装,github地址
a. 下载二进制版本 b. 解压文件 c. 配置环境变量
查看 hugo 版本
扩展版可以在输出种看到 +extended 标识
|
|
显示可用命令
|
|
新建站点
一个站点对应本地的一个文件夹,如:希望在 /site_path/site_name 路径创建一个站点
|
|
创建成功以后切换到对应路径
|
|
可以看到如下文件结构
|
|
新建文章
新建的文章会根据 archetypes/default.md 模板创建在 content/ 目录下
|
|
本地调试
在发布文章之前,你可能希望在本地调试,在站点根路径执行 hugo 命令进行调试
|
|
在浏览器打开 http://localhost:1313
可查看生成的文章
生成最终页面
将文章中的 draft 修改为 false
|
|
运行以后将在站点目录生成 public 目录,该目录包含生成的已发布网站。Hugo根据需要重新创建此目录及其内容。查看详细资料
⚠️Hugo在构建站点前不会清空目录。 根据当前四个条件的评估结果,构建后你的目录可能包含来自以前构建的多余文件。通常的做法是在每次构建之前手动清空目录的内容以删除草稿、过期和未来的内容。
所以推荐使用代参构建
|
|
部署到 Github pages
手动部署
首先在 github 上创建一个名为
xxx.github.io
的public
仓库( xxx 为你个人 github 的用户名)。将
public
文件夹关联到刚创建的仓库1 2 3 4 5 6 7
cd public git init git remote add origin https://github.com/xxxx/xxxx.github.io.git git branch -M main git add . git commit -m "add test.md" git push -u origin master
之后可在浏览器访问 http://xxx.github.io
即可看到发布的文章
手动部署需要每次修改文章编译后推送到 xxx.github.io
仓库,这样就需要手动管理两个目录,过于繁琐
自动部署
仍然需要创建
xxx.github.io
仓库目前我们已经有两个仓库:
- 私有库:MySite
- 公开库:xxxx.github.io
创建 Personal Access Token
Personal access tokens (PATs) are an alternative to using passwords for authentication to GitHub Enterprise Server when using the GitHub API or the command line.
创建PAT的主要目的是给私有库访问目标库的权限,可以让私有 库的actions推送构建好的代码到目标库中去
- 打开 github setting 界面
- 切换到 Developer settings
- 点击 Personal access tokens
- 点击 Tokens(classic)
- 勾选 workflow 和 write:packages
- 生成 PAT
- 复制 ghp_ 开头的 tokens
在私有库设置 Secret
- 打开私有库
- 打开 settings 页面
- 添加 Secret,保持 Secret 名字,例如:SECERT_BLOG
在私有库创建 Action Workflow
在 github 私有仓库页面,选择 Actions, 创建新的 workflow,在搜索中搜索 hugo, 并创建
参照文档并作相应修改
- hugo-version:修改为本地 hugo 版本,可以通过
hugo version
查看 - personal_token:修改为 ${{ secrets.XXX }}, XXX 是刚才在私有仓库设置的 SECRET 名字
- external_repository:公共仓库地址
xxx/xxx.github.io
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
name: GitHub Pages on: push: branches: - main # Set a branch to deploy pull_request: jobs: deploy: runs-on: ubuntu-22.04 concurrency: group: ${{ github.workflow }}-${{ github.ref }} steps: - uses: actions/checkout@v4 with: submodules: true # Fetch Hugo themes (true OR recursive) fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - name: Setup Hugo uses: peaceiris/actions-hugo@v3 with: hugo-version: '0.132.2' extended: true - name: Build run: hugo --minify --cleanDestinationDir - name: Deploy uses: peaceiris/actions-gh-pages@v3 if: github.ref == 'refs/heads/main' with: personal_token: ${{ secrets.XXX }} publish_branch: main publish_dir: ./public external_repository: xxx/xxx.github.io cname: imhy.top
至此,自动部署已完成,每当 push 到 main 分支的时候,github 会自动生成并且部署到个人页面
- hugo-version:修改为本地 hugo 版本,可以通过