菜单

核心命令

相关源文件

本文档详细介绍了 Hugo 的命令行界面 (CLI) 核心命令、它们的结构、标志和执行流程。有关服务器特定的功能,请参阅服务器命令;有关 convert、list 和 mod 等附加命令,请参阅附加命令

命令结构概述

Hugo 的 CLI 是围绕分层命令结构构建的。每个命令都实现特定的功能,其中根命令(hugo)是默认的构建命令。

来源:commands/commands.go22-43 commands/new.go30-169

命令实现架构

Hugo 的命令行界面使用 simplecobra 包实现,该包基于流行的 cobra 库。命令被定义为实现 simplecobra.Commander 接口的结构体。

来源:commands/commandeer.go57-200 commands/commands.go22-73 commands/hugobuilder.go54-170

命令执行流程

执行 Hugo 命令时,流程从初始化到执行会经过几个阶段。

来源:commands/commandeer.go59-88 commands/hugobuilder.go385-413

核心命令:hugo

根命令hugo是默认的构建命令。当不带任何子命令运行时,它会根据项目目录中的配置构建 Hugo 站点。

关键标志

标志类型默认描述
--source, -s字符串""读取文件的文件系统路径,相对路径
--destination, -d字符串""写入文件的文件系统路径
--theme, -t字符串[]要使用的主题(位于 /themes/THEMENAME/)
--baseURL, -b字符串""根目录的主机名(和路径),例如:https://example.com/
--buildDrafts, -D布尔值false包含标记为草稿的内容
--buildFuture, -F布尔值false包含未来发布的内容
--buildExpired, -E布尔值false包含已过期的内容
--gc布尔值false构建后启用清理任务(删除未使用的缓存文件)
--minify布尔值false缩小任何支持的输出格式(HTML、XML 等)
--quiet布尔值false以安静模式构建
--watch, -w布尔值false监视文件系统更改并根据需要重新创建

来源:commands/commandeer.go532-565 commands/commandeer.go579-616

执行过程

当执行 hugo 命令时

  1. 从配置文件(hugo.yaml/toml/json)加载配置
  2. 将静态文件复制到发布目录
  3. 处理和渲染内容文件
  4. 在发布目录中生成站点

来源:commands/hugobuilder.go385-413 commands/hugobuilder.go518-590

核心命令:hugo build

hugo build 命令与根命令hugo 相同。它作为一个明确的构建命令提供,以增加清晰度。它接受相同的标志,并遵循与根命令相同的执行过程。

来源:commands/commands.go45-73

核心命令:hugo new

hugo new 命令用于创建新内容、站点或主题。它有三个子命令:contentsitetheme

hugo new content

创建具有自动设置日期和标题的新内容文件。

hugo new content [path]

关键标志

标志类型默认描述
--kind, -k字符串""要创建的内容类型
--editor字符串""如果提供了编辑器,则使用此编辑器编辑新内容
--force, -f布尔值false如果文件已存在,则覆盖文件

来源:commands/new.go41-75

hugo new site

在提供的目录中创建新的站点(骨架)。

hugo new site [path]

关键标志

标志类型默认描述
--force, -f布尔值false在非空目录中初始化
--format字符串"toml"首选文件格式(toml、yaml 或 json)

来源:commands/new.go76-123

hugo new theme

在 ./themes 目录中创建新的主题(骨架)。

hugo new theme [name]

关键标志

标志类型默认描述
--format字符串"toml"首选文件格式(toml、yaml 或 json)

来源:commands/new.go124-163

配置与环境

Hugo 命令与各种配置机制交互

来源:commands/commandeer.go224-331 commands/hugobuilder.go1026-1058

全局标志

这些标志可用于所有 Hugo 命令

标志类型默认描述
--config字符串""配置文件(默认是 hugo.yaml|json|toml)
--configDir字符串"config"配置目录
--environment, -e字符串""构建环境
--logLevel字符串""日志级别(debug|info|warn|error)
--quiet布尔值false以安静模式构建
--source, -s字符串""读取文件的文件系统路径,相对路径
--themesDir字符串""主题目录的文件系统路径

来源:commands/commandeer.go532-558

版本信息

Hugo 在 common/hugo/version_current.go 文件中维护其版本信息。CLI 命令使用此信息来显示版本信息,并且可以通过 hugo version 命令访问。

来源:common/hugo/version_current.go16-23

默认行为和工作目录

如果未另行指定,Hugo 命令将使用当前工作目录作为默认源目录。文件系统交互通过 hugofs 包进行抽象,该包处理源和目标文件系统。

来源: hugofs/fs.go62-125 commands/commandeer.go242-328

结论

Hugo 的核心命令提供了一套全面的工具,用于创建、构建和管理静态网站。这些命令以分层结构组织,并在整个 CLI 中具有一致的标志命名和行为。理解这些核心命令对于有效使用 Hugo 进行静态网站生成至关重要。