<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hugo Pipes on Hugo 中文文档</title>
    <link>https://hugozh.cn/hugo-pipes/</link>
    <description>Recent content in Hugo Pipes on Hugo 中文文档</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 02 Oct 2026 01:21:54 +0800</lastBuildDate>
    <atom:link href="https://hugozh.cn/hugo-pipes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>简介</title>
      <link>https://hugozh.cn/hugo-pipes/introduction/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/introduction/</guid>
      <description>&lt;h2 id=&#34;在-assets-中查找资源&#34;&gt;在 assets 中查找资源&lt;/h2&gt;&#xA;&lt;p&gt;这里讨论的是全局资源与远程资源：&lt;/p&gt;&#xA;&lt;dl&gt;&#xA;&lt;dt id=&#34;全局资源&#34;&gt;全局资源&lt;/dt&gt;&#xA;&lt;dd&gt;&lt;code&gt;assets&lt;/code&gt; 目录中的文件，或位于任何挂载到 &lt;code&gt;assets&lt;/code&gt; 目录的目录中的文件。&lt;/dd&gt;&#xA;&lt;dt id=&#34;远程资源&#34;&gt;远程资源&lt;/dt&gt;&#xA;&lt;dd&gt;位于远程服务器上、可通过 HTTP 或 HTTPS 访问的文件。&lt;/dd&gt;&#xA;&lt;/dl&gt;&#xA;&lt;p&gt;若资源的作用域属于某个 &lt;code&gt;Page&lt;/code&gt;，请参阅&lt;a href=&#34;https://hugozh.cn/content-management/page-resources/&#34;&gt;页面资源&lt;/a&gt;一节。&lt;/p&gt;</description>
    </item>
    <item>
      <title>把 Sass 编译为 CSS</title>
      <link>https://hugozh.cn/hugo-pipes/transpile-sass-to-css/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/transpile-sass-to-css/</guid>
      <description>&lt;h2 id=&#34;适用前提&#34;&gt;适用前提&lt;/h2&gt;&#xA;&lt;p&gt;用 &lt;code&gt;css.Sass&lt;/code&gt; 函数把 Sass 转译为 CSS。Hugo 的 extended 版与 extended/deploy 版内置了 LibSass 转译器；若想使用 Sass 语言的最新特性，则需另行安装 Dart Sass。Sass 有 SCSS 与缩进语法两种书写形式，Hugo 都支持。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PostCSS</title>
      <link>https://hugozh.cn/hugo-pipes/postcss/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/postcss/</guid>
      <description>&lt;h2 id=&#34;适用前提&#34;&gt;适用前提&lt;/h2&gt;&#xA;&lt;p&gt;用 &lt;code&gt;css.PostCSS&lt;/code&gt; 函数配合 PostCSS 及其任意插件来转换 CSS。PostCSS 运行在 Node.js 之上，因此本机需要安装 Node.js；此外，处理过程会在项目根目录执行 &lt;code&gt;postcss&lt;/code&gt; 命令，该命令必须已经在项目里安装好。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript 构建</title>
      <link>https://hugozh.cn/hugo-pipes/js/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/js/</guid>
      <description>&lt;aside class=&#34;callout callout-note&#34;&gt;&#xA;  &lt;p class=&#34;callout-title&#34;&gt;说明&lt;/p&gt;&#xA;  &lt;div class=&#34;callout-body&#34;&gt;&lt;p&gt;&lt;code&gt;js.Build&lt;/code&gt; 以 &lt;a href=&#34;https://github.com/evanw/esbuild&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;evanw/esbuild&lt;/code&gt;&lt;/a&gt; 为基础，在打包、转译与压缩方面性能高、成熟度好。&lt;/p&gt;&lt;/div&gt;&#xA;&lt;/aside&gt;&lt;p&gt;用 &lt;code&gt;js.Build&lt;/code&gt; 可以：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;打包（bundle）&lt;/li&gt;&#xA;&lt;li&gt;转译（TypeScript 与 JSX）&lt;/li&gt;&#xA;&lt;li&gt;摇树（tree shake，移除无用代码）&lt;/li&gt;&#xA;&lt;li&gt;压缩（minify）&lt;/li&gt;&#xA;&lt;li&gt;生成 source map&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go-html-template&#34; data-lang=&#34;go-html-template&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;resources&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.Get&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;js/main.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;$opts&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;minify&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;cond&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hugo&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.IsDevelopment&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;sourceMap&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;cond&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hugo&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.IsDevelopment&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;linked&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;js&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.Build&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;$opts&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hugo&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.IsDevelopment&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.RelPermalink&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fingerprint&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.RelPermalink&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;integrity&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.Data.Integrity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;crossorigin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;anonymous&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;安装-nodejs-依赖&#34;&gt;安装 Node.js 依赖&lt;/h2&gt;&#xA;&lt;p&gt;凡是不在 &lt;code&gt;assets&lt;/code&gt; 目录内的导入，或者无法解析到 &lt;code&gt;assets&lt;/code&gt; 内某个组件的导入，都会交给 &lt;code&gt;esbuild&lt;/code&gt; 处理，并以&lt;strong&gt;项目目录&lt;/strong&gt;作为解析起点，也就是说，查找 &lt;code&gt;node_modules&lt;/code&gt; 之类的目录时都从项目根目录开始。因此，如果项目引用了 npm 依赖，必须先运行 &lt;code&gt;npm install&lt;/code&gt; 再执行构建；若正在开发一个需要被导入、且依赖自身 &lt;code&gt;package.json&lt;/code&gt; 中那些依赖的主题或组件，可用 &lt;code&gt;hugo mod npm pack&lt;/code&gt; 把项目中的 npm 依赖汇总起来。&lt;/p&gt;</description>
    </item>
    <item>
      <title>资源打包</title>
      <link>https://hugozh.cn/hugo-pipes/bundling/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/bundling/</guid>
      <description>&lt;h2 id=&#34;方法签名与用途&#34;&gt;方法签名与用途&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;resources.Concat&lt;/code&gt; 把一个资源切片拼接为一份资源，并以目标路径作为缓存键。签名如下：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resources.Concat TARGETPATH [RESOURCE...]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回值类型是 &lt;code&gt;resource.Resource&lt;/code&gt;，因此拼接结果可以继续接入 Hugo Pipes 的其他环节。切片中的每个资源必须具有相同的媒体类型；媒体类型不同的资源不能拼接在一起。&lt;/p&gt;</description>
    </item>
    <item>
      <title>资源压缩</title>
      <link>https://hugozh.cn/hugo-pipes/minification/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/minification/</guid>
      <description>&lt;h2 id=&#34;方法签名与用途&#34;&gt;方法签名与用途&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;resources.Minify&lt;/code&gt; 返回给定资源的最小化版本，参数就是资源对象：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resources.Minify RESOURCE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它还有一个别名 &lt;code&gt;minify&lt;/code&gt;，这也是管道写法中最常用的形式。两者完全等价：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go-html-template&#34; data-lang=&#34;go-html-template&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;$css&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;resources&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;.Get&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;css/main.css&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;$style&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;$css&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;minify&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回值类型同样是 &lt;code&gt;resource.Resource&lt;/code&gt;。可以压缩的资源类型为 CSS、JS、JSON、HTML、SVG 与 XML，其他类型不在支持范围内。&lt;/p&gt;</description>
    </item>
    <item>
      <title>资源指纹</title>
      <link>https://hugozh.cn/hugo-pipes/fingerprint/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/fingerprint/</guid>
      <description>&lt;h2 id=&#34;方法签名与用途&#34;&gt;方法签名与用途&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;resources.Fingerprint&lt;/code&gt; 对资源内容做密码学哈希，返回带哈希值的资源对象，用于缓存失效与子资源完整性校验：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resources.Fingerprint [ALGORITHM] RESOURCE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它也有别名 &lt;code&gt;fingerprint&lt;/code&gt;。哈希算法可以是 &lt;code&gt;md5&lt;/code&gt;、&lt;code&gt;sha256&lt;/code&gt;（默认）、&lt;code&gt;sha384&lt;/code&gt; 或 &lt;code&gt;sha512&lt;/code&gt;。虽然最常见的用途是 CSS 与 JavaScript，但任何类型的资源都可以做指纹。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从字符串创建资源</title>
      <link>https://hugozh.cn/hugo-pipes/resource-from-string/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/resource-from-string/</guid>
      <description>&lt;h2 id=&#34;方法签名与用途&#34;&gt;方法签名与用途&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;resources.FromString&lt;/code&gt; 从一个字符串创建资源，并以目标路径作为缓存键：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resources.FromString TARGETPATH STRING&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回值类型是 &lt;code&gt;resource.Resource&lt;/code&gt;，因此它可以继续参与管道，例如压缩或指纹。它适合生成那些内容来自配置或模板变量、而非来自磁盘文件的资源，典型的例子是 &lt;code&gt;security.txt&lt;/code&gt; 与 &lt;code&gt;robots.txt&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从模板创建资源</title>
      <link>https://hugozh.cn/hugo-pipes/resource-from-template/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://hugozh.cn/hugo-pipes/resource-from-template/</guid>
      <description>&lt;h2 id=&#34;方法签名与用途&#34;&gt;方法签名与用途&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;resources.ExecuteAsTemplate&lt;/code&gt; 把一个资源当作 Go 模板来解析和执行，并返回执行结果对应的资源，缓存键是目标路径：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resources.ExecuteAsTemplate TARGETPATH CONTEXT RESOURCE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;三个参数依次是目标路径、执行上下文与资源本身；目标路径同时决定发布后的位置与文件名。当调用结果的 &lt;code&gt;Publish&lt;/code&gt;、&lt;code&gt;Permalink&lt;/code&gt; 或 &lt;code&gt;RelPermalink&lt;/code&gt; 方法时，Hugo 会把资源发布到目标路径。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
