开始(Getting Started)

 

读完此篇,你将能使用 Hugo 搭建一个 Hugo 页面。

 

Getting Started安装Hugo(Install Hugo)快速开始(Quick Start)安装 Hugo创建一个新的页面添加一个主题添加内容启动 Hugo 服务器自定义主题构建页面基本用法(Basic Usage)安装测试hugo 命令草稿,未来内容和过期内容实时加载(LiveReload)关闭实时加载部署网站开发与部署目录结构(Directory Structure)archetypes(原型)assets(资源)config(配置)content(内容)data(数据)layouts(排版)static(静态资源)

安装Hugo(Install Hugo)

 

🌊 原文档介绍了不同平台安装 Hugo 的各种方法,所以没什么好多说的,看原文档安装好了就行。原文档还说了一下如何更新 Hugo,这里就不污辱大家智商了。(原文Hugo Releases

 

快速开始(Quick Start)

 

🔰 学习这节使用 Ananke 主题快速的创建一个 Hugo 网站。

 

此节入门示例使用的是 macOS 系统。有关如何在其它操作系统上安装 Hugo 的说明,请参阅 install

建议安装 Git 来运行本教程。 Git installed

 

安装 Hugo

 

Homebrew 是一个 macOS 的软件包管理器,可以从 brew.sh 安装。如果你运行的是其它操作系统,请参阅安装 install

 

 

创建一个新的页面

 

 

添加一个主题

 

有关要主题列表,请参见 themes.gohugo.io。这里我们使用精美的 Ananke 主题。

 

 

添加内容

 

你可以手动的创建内容文件(内容的目录结构 content/<CATEGORY>/<FILE>.<FORMAT>)并在其中提供元数据。你也可以使用 new 命令为来快速创建(它会自动完成一些事情,例如添加标题和日期) :

 

 

如果需要,请编辑新创建的内容文件(就是上面命令创建的文件),它将从以下内容开始:

 

 

启动 Hugo 服务器

 

现在,启动 Hugo 服务器并启动 草稿可用

 

 

然后在浏览器中打开 http://localhost:1313/,进行查看。

你可以随意编辑或添加新内容,只需在浏览器中刷新即可快速查看更改(您可能需要在 Web 浏览器中强制刷新,通常使用 Ctrl+R、F12 之类的键)。

 

自定义主题

 

👍 你的新站点看起来已经不错了,但是在将其发布给公众之前,您需要对其进行一些调整。

打开 config.toml 配置文件

 

 

将上面的 title 替换为个人的标题。另外,如果你已经准备好域名,请设置 baseURL。注意,运行本地开发服务器时不需要此值。

有关 ananke 主题特定的配置选项,请参见 主题站点

有关进一步的主题自定义,请参阅自定义主题。Customize a Theme

 

🔔 提示:在运行 Hugo 服务器时,对站点配置或站点中的任何其它文件进行更改,你会立即在浏览器中看到更改,即使你可能需要清除缓存。

 

构建页面

 

很简单,运行下面的命令

 

 

默认情况下,输出将位于 ./public/ 目录中( -d /-destination 标志可对其进行更改,或在配置文件中设置publishdir)。

 

基本用法(Basic Usage)

 

💭 这节介绍了 Hugo 的基本用法,以及 Hugo 命令行的简单使用。(运行命令后的效果就不一一展示了,请自行运行命令并观察)

 

Hugo 的 CLI(Command Line Interface) 功能全面、易于使用,对命令行使用经验有限的人也一样。以下是在开发 Hugo 项目时将使用的最常用命令的描述。请阅读 命令行参考 以全面了解 Hugo 的 CLI。

 

安装测试

 

你可以通过 help 命令测试是否已正确安装 Hugo:(它还会列出一些有用的使用帮助)

 

 

hugo 命令

 

尽管你可以通过更改 publishDir 字段在网站配置文件中自定义输出目录,但默认情况下你的网站将生成到public/目录。hugo 命令将站点渲染到 public/目录中,并准备将其部署到 Web 服务器。

 

 

草稿,未来内容和过期内容

 

Draft, Future, and Expired Content

 

Hugo 允许你在内容的开头设置草稿,发布日期,甚至是到期日期。默认情况下,Hugo 不会发布。

  1. publishdate 值的内容

  2. draft: true状态的内容

  3. expirydate 值的内容

  4. 以上三个都可以分别向 hugohugo server 添加以下标志在本地开发和部署期间被覆盖,或者在配置中分别更改它们的布尔值。(配置中没有 --

    1. --buildFuture
    2. --buildDrafts
    3. --buildExpired

 

实时加载(LiveReload)

 

Hugo 内置了 LiveReload,不需要安装的其它软件包。开发时使用 Hugo 的一种常见方法使用 hugo server 命令运行服务器并观察变化。

 

 

这将运行一个功能齐全的 Web 服务器,同时像下面一样的 项目组织目录 中监视文件系统中的添加,删除或更改:

 

每当进行更改时,Hugo 都会同时重建站点并继续提供内容。构建完成后,LiveReload 会让浏览器以静默方式重新加载页面。大多数情况 Hugo 都构建的非常快,除非你是直接在浏览器中查看的,否则你可能不会注意到变化。这意味你无需离开文本编辑器即可查看网站的最新版本。

 

Hugo 在 </body> 标签前将 LiveReload <script> 注入模板中,因此如果不存在此标签,将无法使用。

 

关闭实时加载

 

LiveReload 通过将 JavaScript 注入到 Hugo 生成的页面中来工作。该脚本创建了从浏览器的 Web 套接字客户端到 Hugo Web 套接字服务器的连接。它可能对开发者来说很棒。但是,一些 Hugo 用户可能会在生产中使用 hugo 服务器来立即显示更新的内容。以下方法可以轻松禁用 LiveReload:

 

 

部署网站

 

在本地开发之后,你需要执行最终的 hugo 命令来构建将要发布站点。然后,你将 public/目录复制到 Web 服务器来部署站点。由于 Hugo 会生成一个静态网站,因此你的网站可以使用任何 Web 服务器托管在任何地方。有关由 Hugo 社区提供的用于托管和自动化部署的方法,请参阅 托管和部署

 

⚠️ 运行 hugo 命令不会删除之前生成的文件,这意味着你应该 删除public/ 目录(或者通过标志或配置文件来指定发布目录)。如果不删除这些文件,则可能会在生成的站点中留下错误的文件(例如草稿或将来的帖子)。

 

开发与部署

 

Hugo 不会在生成之前删除生成的文件,一个简单的解决方法是使用不同的目录进行开发和生产。如:启动构建草稿内容的服务器(有助于编辑),可以指定其它目录,例如 dev/ 目录:

 

 

目录结构(Directory Structure)

 

🌵 这节介绍使用 Hugo CLI 搭建的 Hugo 项目的目录结构,以及每一个结构的作用。

 

Hugo CLI 搭建了项目目录结构,然后采用该目录,并将其用作创建完整网站的输入。hugo new site 命令行将将创建具有以下元素的目录结构:

 

 

以下是每个目录的高级概述,并提供了指向 Hugo 文档中各个部分的链接。

 

archetypes(原型)

 

你使用 hugo new 创建了一个新的内容文件。默认情况下,Hugo 将创建至少具有日期、标题和 draft= true 的新内容文件。这样可以节省时间并为使用多种内容类型的网站提供一致性。你还可以创造属于自己具有自定义 front matter 的原型 archetypes

 

❗️ 意思就是默认生成的日期、标题和 draft= true 就叫 front matters,它是提前在 archetype 中定义好的。

assets(资源)

 

存储所有需要由 Hugo Pipes 处理的文件。仅将使用 .Permalink.RelPermalink 的文件发布到 public 目录。注意:默认情况下不会自动创建 assets 目录。

 

config(配置)

 

Hugo 附带了大量的 配置指令。这些指令以 JSON,YAML 或 TOML 文件的形式存储在 config目录 中。每个根设置对象都可以作为配置项并根据环境进行结构化。简单的项目可以使用根目录下的 config.toml 文件。

许多站点可能几乎不需要配置,但是 Hugo 附带了大量的配置指令,以更详尽地指导你如何构建 Hugo 网站。注意:默认情况不会自动创建创建 config 目录。

 

content(内容)

 

你网站的所有内容都将位于此目录中。目录中的每个顶级文件夹都被视为一个内容部分(content section)。举例来说,如果你的网站主要有三个 sections - blogarticlestutorials 你将有三个目录content/blogcontent/articlescontent/tutorials。Hugo 使用 sections 来分配默认 内容类型

 

data(数据)

 

该目录用于存储生成网站时 Hugo 可以使用的配置文件。您可以用 YAML,JSON 或 TOML 格式编写这些文件。除了添加到此文件夹中的文件之外,你还可以创建从动态内容提取的 数据模板

 

layouts(排版)

 

.html 文件形式存储模板,这些模板指定如何将你的内容视图呈现到静态网站中。模板包括 list pageshomepagetaxonomy templatespartialssingle page templates 等。

 

static(静态资源)

 

存储所有静态内容:图像,CSS,JavaScript 等。当 Hugo 构建网站时,静态目录内的所有资源都按原样复制。使用该 static 文件夹的一个很好的例子是 在Google Search Console 上验证网站所有权,你希望 Hugo 在其中复制完整的HTML文件而不修改其内容。

 

从 Hugo 0.31 起,你可以拥有多个静态目录。