本文档提供了 Hugo 命令行界面 (CLI) 的概述,包括其架构、主要命令和常见用法模式。CLI 是与 Hugo 交互以构建网站、启动开发服务器、管理模块和执行其他任务的主要方式。
Hugo 的 CLI 是使用 simplecobra 库(cobra 的封装)并遵循命令/子命令模式。该架构包含一个具有多个执行特定功能的子命令的根命令(hugo)。
来源: commands/commandeer.go56-88 commands/commands.go22-43
运行任何 Hugo 命令时,CLI 会遵循此执行流程。
来源: commands/commandeer.go59-88 commands/hugobuilder.go384-412
Hugo 的 CLI 包含多个用于不同目的的命令类别。
| 命令类别 | 目的 | 主要命令 |
|---|---|---|
| 核心 | 网站构建与发布 | hugo、hugo build、hugo server |
| 内容 | 内容管理 | hugo new、hugo convert、hugo import、hugo list |
| 配置 | 管理配置 | hugo config |
| 模块 | 模块管理 | hugo mod(带有多个子命令) |
| 实用工具 | 辅助命令 | hugo version、hugo env、hugo gen |
Hugo 命令实现为实现了 simplecobra.Commander 接口的 Go 结构体。每个命令都有用于初始化、运行和定义子命令的方法。
来源: commands/commandeer.go102-166 commands/server.go444-476 commands/commandeer.go623-665
hugo 或 hugo build)默认的 hugo 命令会构建您的网站。它会处理所有内容文件,应用模板,并在发布目录中生成静态文件。
构建命令的关键标志
| 标志 | 描述 |
|---|---|
--source、-s | 用于读取文件的文件系统路径 |
--destination、-d | 用于写入文件的文件系统路径 |
--baseURL、-b | 主机的名称和根目录的路径 |
--theme、-t | 要使用的主题 |
--buildDrafts、-D | 包含草稿内容 |
--buildFuture、-F | 包含未来日期的内容 |
--buildExpired、-E | 包含已过期的内容 |
--environment、-e | 构建环境 |
--ignoreCache | 忽略缓存目录 |
--minify | 缩小输出文件 |
--watch、-w | 监视文件系统变化并重建 |
来源: commands/commandeer.go532-604 commands/commandeer.go569-615
hugo server)服务器命令启动 Hugo 的内置开发服务器,该服务器会构建您的网站并在本地提供服务。
服务器命令的关键标志
| 标志 | 描述 |
|---|---|
--port、-p | 服务器绑定的端口 |
--bind | 绑定的接口 |
--watch、-w | 监视文件系统的变化 |
--navigateToChanged、-N | 在浏览器重新加载时导航到更改的内容文件 |
--disableLiveReload | 禁用重新构建时的实时重新加载 |
--disableFastRender | 启用对更改的完全重新渲染 |
--renderToDisk | 渲染到磁盘而非从内存提供服务 |
--appendPort | 将端口附加到 baseURL |
--tlsCertFile | TLS 证书文件 |
--tlsKeyFile | TLS 密钥文件 |
--tlsAuto | 生成并使用本地信任的证书 |
服务器命令工作流程
来源: commands/server.go143-555 commands/server.go862-1047 commands/hugobuilder.go654-886
hugo new)创建新的内容文件,并预填充 front matter。
来源: commands/commandeer.go615-618
hugo list)列出您网站上的各种内容类型,包括草稿、未来内容和已过期内容。
hugo convert)将内容 front matter 从一种格式转换为另一种格式。
hugo config)显示和管理 Hugo 配置。
hugo mod)管理 Hugo 模块。
hugo version)显示 Hugo 版本。
hugo env)显示 Hugo 环境信息,对于调试很有用。
hugo gen)生成对 Hugo 开发和文档有用的各种文件。
子命令
hugo gen doc - 为 Hugo 命令生成 Markdown 文档hugo gen man - 为 Hugo 生成 man pageshugo gen chromastyles - 为 Chroma 语法高亮生成 CSS来源: commands/gen.go42-303 testscripts/commands/gen.txt1-23
hugoBuilder 结构体是处理 Hugo 站点实际构建的关键组件。它管理配置、文件系统和构建过程。
来源: commands/hugobuilder.go54-75 commands/hugobuilder.go92-103 commands/hugobuilder.go384-589
执行上下文管理命令状态和依赖项。
来源: commands/commandeer.go90-125 commands/commandeer.go215-331
以下是 Hugo CLI 的一些常见用法模式
| 任务 | 命令 |
|---|---|
| 创建一个新站点 | hugo new site mysite |
| 创建一个新的内容文件 | hugo new content/posts/new-post.md |
| 构建站点 | hugo 或 hugo build |
| 构建(包括草稿) | hugo -D |
| 启动开发服务器 | hugo server |
| 构建生产版本 | hugo --minify --gc |
| 列出草稿内容 | hugo list drafts |
| 初始化为模块 | hugo mod init github.com/user/repo |
| 获取模块依赖项 | hugo mod get |
| 清理模块缓存 | hugo mod clean |
| 显示配置 | hugo config |
| 显示 Hugo 版本 | hugo version |
来源: commands/commands.go22-43 commands/server.go520-553 commands/commandeer.go569-615
Hugo 的 CLI 架构设计为可扩展的。可以通过实现 simplecobra.Commander 接口并将命令添加到根命令的命令列表中来添加新命令。
simpleCommand 结构体提供了一种便捷的方式来创建具有最少样板代码的命令。
来源: commands/commandeer.go623-665
Hugo 的 CLI 通过 Fs 结构体与文件系统进行交互,它提供了对各种文件系统抽象的访问。
Source: 用于读取内容文件的文件系统PublishDir: 用于写入输出文件的目标文件系统PublishDirStatic: 用于静态文件的文件系统PublishDirServer: 用于通过开发服务器提供文件时使用的文件系统来源: hugofs/fs.go31-61 hugofs/fs.go97-125
Hugo 的 CLI 提供了一套丰富的命令行标志来定制行为。大多数标志都可以通过配置文件和命令行来指定。命令行标志优先于配置文件设置。
全局标志(所有命令都可用)
--source, -s: 用于读取文件的文件系统路径--destination, -d: 用于写入文件的文件系统路径--config: 配置文件(默认为 hugo.yaml|json|toml)--environment, -e: 构建环境--themesDir: 主题目录的文件系统路径--quiet: 以安静模式构建构建标志(构建和服务器命令可用)
--baseURL, -b: 主机名和到根的路径--theme, -t: 使用的主题--buildDrafts, -D: 包括草稿内容--buildFuture, -F: 包括未来日期的内容--buildExpired, -E: 包括已过期内容--ignoreCache: 忽略缓存目录--minify: 最小化输出文件来源: commands/commandeer.go532-566 commands/commandeer.go569-615
Hugo 提供了一个全面的命令行帮助系统。使用 --help 或 -h 配合任何命令,都可以查看用法信息、可用标志和子命令。
此帮助系统是通过 Cobra 的帮助功能实现的,该功能根据命令定义生成用法信息。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(a88b48)