# 简介
> 介绍资源的查找与获取、资产目录、资源发布、管道写法与缓存。
- 官方英文原文：https://gohugo.io/hugo-pipes/introduction/
- 本页规范地址：https://hugozh.cn/hugo-pipes/introduction/
- 最近更新：2026-10-02
- 最后提交：912b1d3 chore(site): 添加 static/CNAME（hugozh.cn），供 GitHub Pages 等平台绑定自定义域名
- 站点：Hugo 中文文档（https://hugozh.cn/）· 社区维护的非官方中文翻译，如有出入以官方英文原文为准

---
## 在 assets 中查找资源

这里讨论的是全局资源与远程资源：

全局资源
: `assets` 目录中的文件，或位于任何挂载到 `assets` 目录的目录中的文件。

远程资源
: 位于远程服务器上、可通过 HTTP 或 HTTPS 访问的文件。

若资源的作用域属于某个 `Page`，请参阅[页面资源](/content-management/page-resources/)一节。

## 取得资源

要用 Hugo Pipes 处理一个资源，必须先把它取出来。

对于全局资源，使用：

- `resources.ByType`
- `resources.Get`
- `resources.GetMatch`
- `resources.Match`

对于远程资源，使用：

- `resources.GetRemote`

## 复制资源

请使用 `resources.Copy` 函数。

## 资产目录

资源文件必须存放在资产目录中。该目录默认为 `assets`，可通过配置文件的 `assetDir` 键修改。

## 资源发布

当你调用 `.Permalink`、`.RelPermalink` 或 `.Publish` 时，Hugo 会把资源发布到 `publishDir`（通常是 `public`）。你也可以用 `.Content` 把资源内容内联到输出中。

## Go 管道

为了便于阅读，本文档中的 Hugo Pipes 示例使用 Go 管道写法：

```go-html-template
{{ $style := resources.Get "sass/main.scss" | css.Sass | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $style.Permalink }}">
```

## 缓存

Hugo Pipes 的每次调用都以整条*管道链*为键进行缓存。一条管道链的例子是：

```go-html-template
{{ $mainJs := resources.Get "js/main.js" | js.Build "main.js" | minify | fingerprint }}
```

一条管道链在同一次站点构建中只会于第一次遇到时执行，其余情况都从缓存读取结果。因此，即便某个模板要被执行成千上万次，Hugo Pipes 也不会对构建速度造成负面影响。

