HUGO
Menu
GitHub 87548 stars Mastodon

Hugo 配置模块

Hugo 配置模块。

Hugo 模块是 Go 模块

您需要 Go 1.18 或更高版本以及 Git 来使用 Hugo 模块。对于托管在 Netlify 上的旧网站,请确保 GO_VERSION 环境变量设置为 1.18 或更高。

Go 模块资源:

顶级选项

这是默认配置:

module:
  noProxy: none
  noVendor: ''
  private: '*.*'
  proxy: direct
  vendorClosest: false
  workspace: 'off'
[module]
  noProxy = 'none'
  noVendor = ''
  private = '*.*'
  proxy = 'direct'
  vendorClosest = false
  workspace = 'off'
{
   "module": {
      "noProxy": "none",
      "noVendor": "",
      "private": "*.*",
      "proxy": "direct",
      "vendorClosest": false,
      "workspace": "off"
   }
}
auth
New in v0.144.0
(string) 配置运行模块操作的 Go 命令时的 GOAUTH。这是用于 go-import 和 HTTPS 模块镜像交互的身份验证命令的分号分隔列表。这对于私有仓库很有用。详见 go help goauth 获取更多信息。
noProxy
(string) 逗号分隔的 glob 模式 列表,匹配不应使用 配置的代理服务器 的路径。
noVendor
(string) glob 模式,匹配在 vendoring 时要跳过的模块路径。
private
(string) 逗号分隔的 glob 模式 列表,匹配应视为私有的路径。
proxy
(string) 用于下载远程模块的代理服务器。默认值是 direct,即使用 git clone 和类似方式。
replacements
(string) 主要用于本地模块开发,从模块路径到目录的映射的逗号分隔列表。路径可以是绝对的或相对于 themesDir 的。
module:
  replacements: github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path
[module]
  replacements = 'github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path'
{
   "module": {
      "replacements": "github.com/bep/my-theme -\u003e ../..,github.com/bep/shortcodes -\u003e /some/path"
   }
}
vendorClosest
(bool) 是否选择离使用它的模块最近的 vendored 模块。默认行为是选择第一个。请注意,仍然只能有一个给定模块路径的依赖项,因此一旦使用就不能重新定义。默认值是 false
workspace
(string) 要使用的 Go 工作区文件,可以是绝对路径或相对于当前工作目录的路径。启用此选项将激活 Go 工作区模式,需要 Go 1.18 或更高版本。默认值是 off

您也可以使用环境变量来设置上述任何选项。例如:

export HUGO_MODULE_PROXY="https://proxy.example.org"
export HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."
export HUGO_MODULE_WORKSPACE="/my/hugo.work"

Hugo 版本

您可以在 module 部分中为模块指定所需的 Hugo 版本。如果用户的 Hugo 版本不兼容,他们将收到警告。

这是默认配置:

module:
  hugoVersion:
    extended: false
    max: ''
    min: ''
[module]
  [module.hugoVersion]
    extended = false
    max = ''
    min = ''
{
   "module": {
      "hugoVersion": {
         "extended": false,
         "max": "",
         "min": ""
      }
   }
}

您可以省略上述任何设置。

extended
(bool) 是否需要 Hugo 的扩展版,安装扩展版或扩展版/deploy 版即可满足。

扩展版本检查在 v0.153.2 及更高版本中已禁用。

历史上,某些功能(特别是 WebP 编码和 LibSass)需要 Hugo Extended 二进制文件。但是,从 v0.153.0 开始:

  • WebP 编码现在在所有 Hugo 版本中都支持。
  • LibSass 已弃用,改用 Dart Sass,它与任何 Hugo 版本兼容。

由于这些依赖项不再需要专用二进制文件,因此已删除扩展版本的内部强制检查。鼓励站点和主题作者使用 Dart Sass 以确保跨版本兼容性。

max
(string) 支持的最大 Hugo 版本,例如 0.153.0
min
(string) 支持的最小 Hugo 版本,例如 0.102.0

导入

module:
  imports:
  - disable: false
    ignoreConfig: false
    ignoreImports: false
    path: github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v
  - path: my-shortcodes
[module]
  [[module.imports]]
    disable = false
    ignoreConfig = false
    ignoreImports = false
    path = 'github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v'
  [[module.imports]]
    path = 'my-shortcodes'
{
   "module": {
      "imports": [
         {
            "disable": false,
            "ignoreConfig": false,
            "ignoreImports": false,
            "path": "github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v"
         },
         {
            "path": "my-shortcodes"
         }
      ]
   }
}
disable
(bool) 是否禁用模块但保留 go.* 文件中的版本信息。默认值是 false
ignoreConfig
(bool) 是否忽略模块配置文件,例如 hugo.toml。这也将阻止加载任何传递模块依赖项。默认值是 false
ignoreImports
(bool) 是否忽略模块导入。默认值是 false
noMounts
(bool) 是否禁用此导入的目录挂载。默认值是 false
noVendor
(bool) 是否禁用此导入的 vendoring。此设置仅限于主项目。默认值是 false
path
(string) 模块路径,可以是有效的 Go 模块路径(例如 github.com/gohugoio/myShortcodes)或存储在 themesDir 中的目录名。
version
New in v0.150.0
如果设置为 版本查询,此导入将成为直接依赖项,与 Go Modules 管理的依赖项相反。详见 此问题 获取更多信息。

挂载

mount(挂载)是一个配置对象,它将文件系统路径(源)映射到 Hugo unified file system(统一文件系统)内?component(组件)路径(目标)

如果您定义了一个或多个挂载将文件系统路径映射到组件路径,请不要使用这些传统配置设置:archetypeDirassetDircontentDirdataDiri18nDirlayoutDirstaticDir

默认挂载

在项目中,如果您定义了一个挂载将文件系统路径映射到组件路径,则该组件的相应默认挂载将被移除。此操作实质上是用您的自定义映射覆盖该特定组件的标准自动映射。

在模块中,如果您定义了一个挂载将文件系统路径映射到组件路径,则所有默认挂载都将被移除。在模块级别定义挂载是一个更广泛的变化,导致该模块中的所有默认映射都被丢弃。

在这两种情况下,如果您仍然需要默认挂载之一,则必须在添加新挂载的同时显式添加它。由于自定义挂载会覆盖默认值,因此在引入自定义配置后,任何必要的默认映射都必须手动重新添加。

以下是默认挂载:

module:
  mounts:
  - disableWatch: false
    files: null
    sites:
      complements:
        languages: null
        roles: null
        versions: null
      matrix:
        languages: null
        roles: null
        versions: null
    source: content
    target: content
  - disableWatch: false
    files: null
    sites:
      complements:
        languages: null
        roles: null
        versions: null
      matrix:
        languages: null
        roles: null
        versions: null
    source: data
    target: data
  - disableWatch: false
    files: null
    sites:
      complements:
        languages: null
        roles: null
        versions: null
      matrix:
        languages: null
        roles: null
        versions: null
    source: layouts
    target: layouts
  - disableWatch: false
    files: null
    sites:
      complements:
        languages: null
        roles: null
        versions: null
      matrix:
        languages: null
        roles: null
        versions: null
    source: i18n
    target: i18n
  - disableWatch: false
    files: null
    sites:
      complements:
        languages: null
        roles: null
        versions: null
      matrix:
        languages: null
        roles: null
        versions: null
    source: archetypes
    target: archetypes
  - disableWatch: false
    files: null
    sites:
      complements:
        languages: null
        roles: null
        versions: null
      matrix:
        languages: null
        roles: null
        versions: null
    source: assets
    target: assets
  - disableWatch: false
    files: null
    sites:
      complements:
        languages: null
        roles: null
        versions: null
      matrix:
        languages: null
        roles: null
        versions: null
    source: static
    target: static
[module]
  [[module.mounts]]
    disableWatch = false
    source = 'content'
    target = 'content'
    [module.mounts.sites]
      [module.mounts.sites.complements]
      [module.mounts.sites.matrix]
  [[module.mounts]]
    disableWatch = false
    source = 'data'
    target = 'data'
    [module.mounts.sites]
      [module.mounts.sites.complements]
      [module.mounts.sites.matrix]
  [[module.mounts]]
    disableWatch = false
    source = 'layouts'
    target = 'layouts'
    [module.mounts.sites]
      [module.mounts.sites.complements]
      [module.mounts.sites.matrix]
  [[module.mounts]]
    disableWatch = false
    source = 'i18n'
    target = 'i18n'
    [module.mounts.sites]
      [module.mounts.sites.complements]
      [module.mounts.sites.matrix]
  [[module.mounts]]
    disableWatch = false
    source = 'archetypes'
    target = 'archetypes'
    [module.mounts.sites]
      [module.mounts.sites.complements]
      [module.mounts.sites.matrix]
  [[module.mounts]]
    disableWatch = false
    source = 'assets'
    target = 'assets'
    [module.mounts.sites]
      [module.mounts.sites.complements]
      [module.mounts.sites.matrix]
  [[module.mounts]]
    disableWatch = false
    source = 'static'
    target = 'static'
    [module.mounts.sites]
      [module.mounts.sites.complements]
      [module.mounts.sites.matrix]
{
   "module": {
      "mounts": [
         {
            "disableWatch": false,
            "files": null,
            "sites": {
               "complements": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               },
               "matrix": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               }
            },
            "source": "content",
            "target": "content"
         },
         {
            "disableWatch": false,
            "files": null,
            "sites": {
               "complements": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               },
               "matrix": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               }
            },
            "source": "data",
            "target": "data"
         },
         {
            "disableWatch": false,
            "files": null,
            "sites": {
               "complements": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               },
               "matrix": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               }
            },
            "source": "layouts",
            "target": "layouts"
         },
         {
            "disableWatch": false,
            "files": null,
            "sites": {
               "complements": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               },
               "matrix": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               }
            },
            "source": "i18n",
            "target": "i18n"
         },
         {
            "disableWatch": false,
            "files": null,
            "sites": {
               "complements": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               },
               "matrix": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               }
            },
            "source": "archetypes",
            "target": "archetypes"
         },
         {
            "disableWatch": false,
            "files": null,
            "sites": {
               "complements": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               },
               "matrix": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               }
            },
            "source": "assets",
            "target": "assets"
         },
         {
            "disableWatch": false,
            "files": null,
            "sites": {
               "complements": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               },
               "matrix": {
                  "languages": null,
                  "roles": null,
                  "versions": null
               }
            },
            "source": "static",
            "target": "static"
         }
      ]
   }
}
source
(string) 挂载的源目录。对于主项目,这可以是项目相对或绝对的。对于其他模块,它必须是项目相对的。
target
(string) 挂载在 Hugo 的 统一文件系统 中的位置。它必须以 Hugo 的 组件 目录之一开头:archetypes、assets、content、data、i18n、layouts 或 static。例如,content/blog。
disableWatch
New in v0.128.0
(bool) 是否在此挂载的监视模式中禁用监视。默认值是 false
files
New in v0.153.0
(string[]string) glob 切片,定义要包含或排除的文件。
sites
New in v0.153.0
(map) 定义挂载的 站点矩阵站点补集 的映射。与 contentlayouts 挂载相关,以及在多主机模式下与 static 挂载相关。对于 staticlayouts,仅支持 matrix 关键字。

示例

module:
  mounts:
  - excludeFiles: docs/*
    source: content
    target: content
  - source: node_modules
    target: assets
  - source: assets
    target: assets
[module]
  [[module.mounts]]
    excludeFiles = 'docs/*'
    source = 'content'
    target = 'content'
  [[module.mounts]]
    source = 'node_modules'
    target = 'assets'
  [[module.mounts]]
    source = 'assets'
    target = 'assets'
{
   "module": {
      "mounts": [
         {
            "excludeFiles": "docs/*",
            "source": "content",
            "target": "content"
         },
         {
            "source": "node_modules",
            "target": "assets"
         },
         {
            "source": "assets",
            "target": "assets"
         }
      ]
   }
}

Last updated: January 1, 0001
Improve this page