©️ OverlookArt
首页 / HUGO / HUGO

HUGO

HUGO 简介

HUGO 官网

Hugo是一款由Go语言开发的静态网站生成器。它的主要特点是:

  • 速度极快:Hugo能在毫秒级内构建网站,主要因为它基于Go开发可以进行并行编译。
  • 易用:Hugo有简单的命令和直观的配置,非常易于上手和使用。
  • 跨平台:可以在Windows、Linux、macOS等任意平台安装运行。
  • 博客友好:内置支持文章、标签、分类等元素,非常适合构建博客网站。
  • 支持主题:有丰富的开源主题可供选择,可以方便切换主题修改网站样式。
  • 自定义:Hugo支持自定义模板、样式、布局等,可以完全控制网站输出。
  • 部署方便:可以方便部署到任意静态网站托管服务,还支持自动部署。
  • 开源免费:Hugo是完全开源的项目,可以免费商业使用。
  • 社区活跃:有活跃的用户社区可以提供各种资料和帮助。

Hugo的这些优点使其成为一个非常流行和强大的静态网站生成器。许多博客和开源项目都选择使用Hugo来构建和管理自己的网站,这也进一步推动了Hugo社区的发展。
总之,Hugo是一个快速、易用、功能强大的静态网站生成工具,适用于构建个人博客、开源项目网站或者商业项目网站。希望这个简介能加深您对Hugo的了解。

快速使用

 1# macOS安装/更新版本
 2$ brew install hugo
 3
 4$ brew upgrade hugo
 5
 6# windows 安装
 7$
 8
 9# 查看安装的版本 
10$ hugo version
11
12# 生成站点
13$ hugo new site 
14
15# 下载主题
16$ git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
17
18# 配置主题
19$ echo "theme = 'ananke'" >> config.toml
20
21# 添加页面 
22$ hugo new posts/my-first-post.md
23
24# 运行调试
25$ hugo serve
26$ hugo server -D
27
28# 编译
29$ hugo
30$ hugo -D #编译正在开发的文章
31$ hugo -E #编译已经过期的文章
32$ hugo -F #编译即将发布的文章

Hugo 如何工作的

  1. 网站初始化:加载配置,Hugo会根据配置加载网站配置,主题等信息初始化网站
  2. 载入数据:解析 Markdown 和 TOML,构建数据结构,Hugo会解析并载入网站内容文件夹的Markdown文件、TOML配置等数据源,转换为Hugo的数据结构。
  3. 站点构建:创建网站目录结构,根据配置创建网站目录结构,如content、themes、static、data等文件夹。
  4. 主题应用:加载主题至网站,根据主题配置加载主题文件夹,将主题的模板、静态资源等合并到网站中。
  5. 页面渲染:渲染模板生成HTML,Hugo根据templates中的模版和数据的渲染生成HTML页面。并将CSS、JS等资源复制到输出的public文件夹。
  6. 资源处理:复制CSS, JS等至输出文件夹, 输出public:Hugo将渲染生成的HTML页面以及资源文件输出到public文件夹。public文件夹中的内容就是最终构建的静态网站。
  7. 输出和发布:构建输出文件夹并部署,将public文件夹的内容部署至Web服务器,最终完成网站的发布。
sequenceDiagram participant 项目启动 participant 载入数据 participant 站点构建 participant 主题应用 participant 页面渲染 项目启动->>载入数据: 加载网站配置,主题信息 载入数据->>站点构建: 解析 Markdown 和 TOML 构建数据结构 站点构建->>主题应用: 创建网站目录结构 主题应用->>页面渲染: 加载主题文件

gif

部署到 Github

先决条件

  1. 创建 Github 账号
  2. 安装 Git 环境
  3. 创建 Hugo 项目,并使用 Hugo serve 在本地测试

网站类型

GitHub Pages网站有三种类型:项目、用户和组织。项目站点连接到GitHub上托管的特定项目。用户和组织网站连接到GitHub.com上的特定帐户。

部署流程

  1. 创建一个 GitHub 仓库

  2. 将本地的 Hugo 项目代码提交到 GitHub 仓库

  3. 修改 GitHub 仓库的名称为 “”

  4. 配置 GitHub Pages

  5. 将 GitHub Pages 的部署方式改为 GitHub Actions

  6. 在 GitHub 仓库 的 workflows 下创建部署脚本文件 /workflows/hugo.yaml

  7. 编写部署脚本

     1# Sample workflow for building and deploying a Hugo site to GitHub Pages
     2 name: Deploy Hugo site to Pages
     3
     4 on:
     5 # Runs on pushes targeting the default branch
     6 push:
     7     branches:
     8     - main
     9
    10 # Allows you to run this workflow manually from the Actions tab
    11 workflow_dispatch:
    12
    13 # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
    14 permissions:
    15 contents: read
    16 pages: write
    17 id-token: write
    18
    19 # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
    20 # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
    21 concurrency:
    22 group: "pages"
    23 cancel-in-progress: false
    24
    25 # Default to bash
    26 defaults:
    27 run:
    28     shell: bash
    29
    30 jobs:
    31 # Build job
    32 build:
    33     runs-on: ubuntu-latest
    34     env:
    35     HUGO_VERSION: 0.136.4
    36     steps:
    37     - name: Install Hugo CLI
    38     run: |
    39       wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
    40       && sudo dpkg -i ${{ runner.temp }}/hugo.deb          
    41   - name: Install Dart Sass Embedded
    42     run: sudo snap install dart-sass-embedded
    43   - name: Checkout
    44     uses: actions/checkout@v3
    45     with:
    46       submodules: recursive
    47       fetch-depth: 0
    48   - name: Setup Pages
    49     id: pages
    50     uses: actions/configure-pages@v3
    51   - name: Install Node.js dependencies
    52     run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
    53   - name: Build with Hugo
    54     env:
    55       # For maximum backward compatibility with Hugo modules
    56       HUGO_ENVIRONMENT: production
    57       HUGO_ENV: production
    58     run: |
    59       hugo \
    60         --gc \
    61         --minify \
    62         --baseURL "${{ steps.pages.outputs.base_url }}/"          
    63   - name: Upload artifact
    64     uses: actions/upload-pages-artifact@v1
    65     with:
    66       path: ./public
    67
    68 # Deployment job
    69 deploy:
    70 environment:
    71   name: github-pages
    72   url: ${{ steps.deployment.outputs.page_url }}
    73 runs-on: ubuntu-latest
    74 needs: build
    75 steps:
    76   - name: Deploy to GitHub Pages
    77     id: deployment
    78     uses: actions/deploy-pages@v2
    
  8. 使用类似“添加工作流”的提交消息将更改提交到本地存储库,然后推送到GitHub。

content 提供 markdown 文件作为页面内容

layouts 提供页面布局及样式

Hugo Modules

  1. 安装 go 环境 https://golang.org/dl/
  2. 初始化 $ hugo mod init github.com/gohugoio/myShortcodes
  3. 添加一个主题模块 $ hugo mod get github.com/panr/hugo-theme-terminal
  4. 配置项目模块
  5. 更新所有模块 $ hugo mod get -u