资源目录

资源文件必须存储在asset目录中, 默认是/assets,可以通过配置文件的assetDir键来配置.

从文件到资源

为通过Hugo管道处理资源,资源必须通过resources.Get获得, 接受一个参数: 资源文件相对于资源目录的文件路径

1
{{ $style := resources.Get "sass/main.scss" }}

资源发布

资源仅仅在.Permalink 或者 .RelPermalink 被使用时会被发布(在/public目录)

Go管道

为提高可读性, 下面的Hugo管道例子使用Go Pipes编写:

1
2
{{ $style := resources.Get "sass/main.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $style.Permalink }}">

方法别名

每个Hugo管道资源转换方法具有一个__驼峰大小写__的别名(如toCSS对于resources.ToCSS).

非转换方法, 被取消了通过别名访问的函数有:resources.Get, resources.FromString, resources.ExecuteAsTemplateresources.Concat.

使用别名,上面例子也可以写成如下形式:

1
2
{{ $style := resources.Get "sass/main.scss" | toCSS | minify | fingerprint }}
<link rel="stylesheet" href="{{ $style.Permalink }}">

Caching 缓存

Hugo管道调用基于整个 管道链 有缓存.

管道链的例子如下:

1
{{ $mainJs := resources.Get "js/main.js" | js.Build "main.js" | minify | fingerprint }}

管道链仅仅在站点构建第一次遇到时被调用, 其他时候结果从缓存提取。 因此,hugo管道可以在模板中执行成千上万次而不会严重影响构建效率。