使用 hugo 部署
使用 hugo deploy 命令将您的网站部署到 Amazon S3、Azure Blob Storage 或 Google Cloud Storage。
此功能需要 Hugo extended/deploy 版本。详见 安装 部分。
假设
-
您已完成 快速入门,或已准备好部署并分享您的 Hugo 网站。
-
您拥有要部署的服务提供商(AWS、Azure 或 Google Cloud)的账户。
-
您已完成身份验证。
- AWS:安装 CLI 并运行
aws configure。 - Azure:安装 CLI 并运行
az login。 - Google Cloud:安装 CLI 并运行
gcloud auth login。
每个服务支持多种身份验证方法,包括环境变量。详见 详情。
- AWS:安装 CLI 并运行
-
您已创建要部署到的存储桶。如果您希望网站公开,请确保将存储桶配置为静态网站公开可读。
配置
在您的 网站配置 中创建部署目标。唯一必需的参数是 name 和 url:
deployment:
targets:
- name: production
url: s3://my_bucket?region=us-west-1
[deployment]
[[deployment.targets]]
name = 'production'
url = 's3://my_bucket?region=us-west-1'
{
"deployment": {
"targets": [
{
"name": "production",
"url": "s3://my_bucket?region=us-west-1"
}
]
}
}
部署
要部署到目标:
hugo deploy [--target=<target name>]此命令将本地 public 目录(默认发布目录)的内容与目标存储桶同步。如果未指定目标,Hugo 将部署到第一个配置的目标。
有关更多命令行选项,请参阅 hugo help deploy 或 CLI 文档。
文件列表创建
hugo deploy 通过遍历本地发布目录和远程存储桶来创建本地和远程文件列表。包含和排除由部署目标的 配置 确定:
include:默认跳过所有文件,除非匹配该模式。exclude:跳过匹配该模式的文件。
在创建本地文件列表期间,Hugo 会跳过 .DS_Store 文件和隐藏目录(以句点开头,如 .git),但 .well-known 目录除外(如果存在则遍历)。
文件列表比较
Hugo 比较本地和远程文件列表以识别必要的更改。它首先比较文件名。如果两者都存在,则比较大小和 MD5 校验和。任何差异都会触发重新上传,并且本地不存在的远程文件将被删除。
由于 include/exclude 配置而被排除的远程文件不会被删除。
--force 标志强制所有文件重新上传,即使 Hugo 未检测到本地/远程差异。
--confirm 或 --dryRun 标志使 Hugo 显示检测到的差异,然后暂停或停止。
同步
Hugo 将更改应用到远程存储桶:上传缺失或更改的文件,并删除本地不存在的远程文件。上传的文件头根据匹配器配置在远程配置。
为防止意外数据丢失,Hugo 默认不会删除超过 256 个远程文件。使用 --maxDeletes 标志可覆盖此限制。
高级配置
请参阅 配置部署。