本文档详细介绍了 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 命令时
来源:commands/hugobuilder.go385-413 commands/hugobuilder.go518-590
hugo buildhugo build 命令与根命令hugo 相同。它作为一个明确的构建命令提供,以增加清晰度。它接受相同的标志,并遵循与根命令相同的执行过程。
hugo newhugo new 命令用于创建新内容、站点或主题。它有三个子命令:content、site 和 theme。
hugo new content创建具有自动设置日期和标题的新内容文件。
hugo new content [path]
| 标志 | 类型 | 默认 | 描述 |
|---|---|---|---|
--kind, -k | 字符串 | "" | 要创建的内容类型 |
--editor | 字符串 | "" | 如果提供了编辑器,则使用此编辑器编辑新内容 |
--force, -f | 布尔值 | false | 如果文件已存在,则覆盖文件 |
hugo new site在提供的目录中创建新的站点(骨架)。
hugo new site [path]
| 标志 | 类型 | 默认 | 描述 |
|---|---|---|---|
--force, -f | 布尔值 | false | 在非空目录中初始化 |
--format | 字符串 | "toml" | 首选文件格式(toml、yaml 或 json) |
hugo new theme在 ./themes 目录中创建新的主题(骨架)。
hugo new theme [name]
| 标志 | 类型 | 默认 | 描述 |
|---|---|---|---|
--format | 字符串 | "toml" | 首选文件格式(toml、yaml 或 json) |
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 进行静态网站生成至关重要。