<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https://mediawiki.zina.run/index.php?action=history&amp;feed=atom&amp;title=Hugo_Pipes</id>
	<title>Hugo Pipes - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zina.run/index.php?action=history&amp;feed=atom&amp;title=Hugo_Pipes"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zina.run/index.php?title=Hugo_Pipes&amp;action=history"/>
	<updated>2026-10-12T10:01:08Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://mediawiki.zina.run/index.php?title=Hugo_Pipes&amp;diff=809&amp;oldid=prev</id>
		<title>Romych: /* Fingerprint */</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zina.run/index.php?title=Hugo_Pipes&amp;diff=809&amp;oldid=prev"/>
		<updated>2022-01-21T09:49:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Fingerprint&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;←[[Hugo]]&lt;br /&gt;
&lt;br /&gt;
С помощью Hugo Pipes можно делать сборку сайта без Gulp.&lt;br /&gt;
&lt;br /&gt;
== SASS / SCSS ==&lt;br /&gt;
&lt;br /&gt;
* Официальная документация: [https://gohugo.io/hugo-pipes/scss-sass/ SASS / SCSS]&lt;br /&gt;
* Пример использования: [[Hugo + Bootstrap]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
{{ $sass := resources.Get &amp;quot;sass/main.scss&amp;quot; }}&lt;br /&gt;
{{ $style := $sass | resources.ToCSS }}&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;{{ $style.RelPermalink }}&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры &amp;#039;&amp;#039;&amp;#039;ToCSS&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;targetPath&amp;lt;/code&amp;gt;  — если не указан, имя сгенерированного файла и путь к нему будет как у исходного файла с расширением, замененным на &amp;lt;code&amp;gt;.css&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;outputStyle&amp;lt;/code&amp;gt; — форматирование CSS кода. Варианты: &lt;br /&gt;
** &amp;lt;code&amp;gt;nested&amp;lt;/code&amp;gt; — по умолчанию — как &amp;lt;code&amp;gt;expanded&amp;lt;/code&amp;gt;, но немного компактнее&lt;br /&gt;
** &amp;lt;code&amp;gt;expanded&amp;lt;/code&amp;gt; — традиционный стиль форматирования&lt;br /&gt;
** &amp;lt;code&amp;gt;compact&amp;lt;/code&amp;gt; — каждый стиль в одну строку&lt;br /&gt;
** &amp;lt;code&amp;gt;compressed&amp;lt;/code&amp;gt; — все стили в одну строку&lt;br /&gt;
* &amp;lt;code&amp;gt;precision&amp;lt;/code&amp;gt; — точность вычисления плавающей точки.&lt;br /&gt;
* &amp;lt;code&amp;gt;enableSourceMap&amp;lt;/code&amp;gt; — создавать source map.&lt;br /&gt;
* &amp;lt;code&amp;gt;includePaths&amp;lt;/code&amp;gt; — пути (относительно папки проекта) к дополнительным SCSS/SASS файлам. Например, можно указать &amp;lt;code&amp;gt;node_modules/bootstrap/scss&amp;lt;/code&amp;gt; — тогда импорт стилей Bootstrap из этой папки можно будет делать без указаня полного пути — просто в виде &amp;lt;code&amp;gt;@import &amp;quot;functions&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры &amp;#039;&amp;#039;&amp;#039;resources.Get&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;minify&amp;lt;/code&amp;gt; — минифицировать. В имя результирующего файла будет добавлен суффикс &amp;lt;code&amp;gt;.min&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fingerprint&amp;lt;/code&amp;gt; — добавить к имени файла уникальный номер (хеш файла)&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
{{ $options := (dict &amp;quot;targetPath&amp;quot; &amp;quot;style.css&amp;quot; &amp;quot;outputStyle&amp;quot; &amp;quot;compressed&amp;quot; &amp;quot;enableSourceMap&amp;quot; true &amp;quot;includePaths&amp;quot; (slice &amp;quot;node_modules/bootstrap/scss&amp;quot;)) }}&lt;br /&gt;
{{ $style := resources.Get &amp;quot;sass/main.scss&amp;quot; | resources.ToCSS $options }}&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;{{ $style.RelPermalink }}&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Минификация ===&lt;br /&gt;
&lt;br /&gt;
В документации [https://gohugo.io/hugo-pipes/scss-sass/ сказано]: Setting &amp;lt;code&amp;gt;outputStyle&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;compressed&amp;lt;/code&amp;gt; will handle SASS/SCSS files minification better than the more generic &amp;lt;code&amp;gt;resources.Minify&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сравнение размера файла с разными настройками:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;7&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Без минификации !! С минификацией&lt;br /&gt;
|-&lt;br /&gt;
| 357658 style.expanded.css&amp;lt;br&amp;gt;364762 style.nested.css&amp;lt;br&amp;gt;&amp;#039;&amp;#039;&amp;#039;290815&amp;#039;&amp;#039;&amp;#039; style.compressed.css ||  288504 style.min.expanded.css&amp;lt;br&amp;gt;288504 style.min.nested.css&amp;lt;br&amp;gt;&amp;#039;&amp;#039;&amp;#039;288201&amp;#039;&amp;#039;&amp;#039; style.min.compressed.css&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Видно, что параметр &amp;lt;code&amp;gt;outputStyle&amp;lt;/code&amp;gt; сжимает файл хорошо, но все равно минификация &amp;lt;code&amp;gt;minify&amp;lt;/code&amp;gt; делает это немного лучше.&lt;br /&gt;
&lt;br /&gt;
А самый лучший результат получается при сочетании обоих параметров.&lt;br /&gt;
&lt;br /&gt;
В следующем примере минификация включается только в режиме, когда не запущен &amp;lt;code&amp;gt;hugo server&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
{{- $scss := resources.Get &amp;quot;scss/main.scss&amp;quot; -}}&lt;br /&gt;
{{- $options := (dict &amp;quot;targetPath&amp;quot; &amp;quot;/css/style.css&amp;quot;) -}}&lt;br /&gt;
&lt;br /&gt;
{{- if eq hugo.Environment &amp;quot;development&amp;quot; -}}&lt;br /&gt;
  {{- $options = merge $options (dict &amp;quot;outputStyle&amp;quot; &amp;quot;expanded&amp;quot;) -}}&lt;br /&gt;
  {{- $options = merge $options (dict &amp;quot;enableSourceMap&amp;quot; true) -}}&lt;br /&gt;
  {{- $style := $scss | toCSS $options | fingerprint }}&lt;br /&gt;
  &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;{{ $style.Permalink }}&amp;quot;&amp;gt;&lt;br /&gt;
{{- else -}}&lt;br /&gt;
  {{- $options = merge $options (dict &amp;quot;outputStyle&amp;quot; &amp;quot;compressed&amp;quot;) -}}&lt;br /&gt;
  {{- $style := $scss | toCSS $options | fingerprint | minify }}&lt;br /&gt;
  &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;{{ $style.Permalink }}&amp;quot;&amp;gt;&lt;br /&gt;
{{- end -}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fingerprint ===&lt;br /&gt;
&lt;br /&gt;
Чтобы при обновлении стилей они применились в браузере, а не использовались закешированные, нужно добавлять к имени CSS файла уникальный суффикс — fingerprint.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;go&amp;quot;&amp;gt;&lt;br /&gt;
{{ $css := resources.Get &amp;quot;css/main.css&amp;quot; | fingerprint  }}&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;{{ $css.RelPermalink }}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае ссылка на &amp;lt;code&amp;gt;css/main.css&amp;lt;/code&amp;gt; будет иметь вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/css/main.062818c8bff36c19f1e1761e92d34a8f87314791ec00ed704e028cda89b2c67c.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По умолчанию используется хеш-функция &amp;#039;&amp;#039;&amp;#039;sha256&amp;#039;&amp;#039;&amp;#039;. Можно использовать [https://gohugo.io/hugo-pipes/fingerprint/ другие хеш-функции]:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;— sha384&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;go&amp;quot;&amp;gt;&lt;br /&gt;
{{ $css := resources.Get &amp;quot;css/main.css&amp;quot; | fingerprint &amp;quot;sha384&amp;quot; }}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/css/main.aa706e53b92fb6c8889365888c712a8125cc074cac2e37788f0deedd135a104e45017e75320b1cbaf7dc682683d1e45c.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;— sha512&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;go&amp;quot;&amp;gt;&lt;br /&gt;
{{ $css := resources.Get &amp;quot;css/main.css&amp;quot; | fingerprint &amp;quot;sha512&amp;quot; }}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/css/main.76dd79e4715f8872903883a4f611732b64f795d1df1522fda397f513c120253a5afff130d6345346e6ab1ab4d2ae1e4c137023e27b04307cd9bb7093dbba7bd9.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;— md5&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;go&amp;quot;&amp;gt;&lt;br /&gt;
{{ $css := resources.Get &amp;quot;css/main.css&amp;quot; | fingerprint &amp;quot;md5&amp;quot; }}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/css/main.8c679acf9d0d47fd3d997c1fe098f2e1.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostCSS ===&lt;br /&gt;
&lt;br /&gt;
* Официальная документация: [https://gohugo.io/hugo-pipes/postcss/ PostCSS]&lt;br /&gt;
&lt;br /&gt;
Параметры PostCSS:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt; — путь к конфигурационному файлу PostCSS&lt;br /&gt;
* &amp;lt;code&amp;gt;noMap&amp;lt;/code&amp;gt; — по умолчанию true — отключить sourcemaps&lt;br /&gt;
* &amp;lt;code&amp;gt;inlineImports&amp;lt;/code&amp;gt; — по умолчанию false — включить встраивание операторов @import. Работает рекурсивно, но импортирует файл только один раз. Игнорируется импорт URL (типа &amp;lt;code&amp;gt;@import url(&amp;#039;https://fonts.googleapis.com/css?family=Open+Sans&amp;amp;display=swap&amp;#039;);&amp;lt;/code&amp;gt;) и импорт с media queries. Обратите внимание, что эта подпрограмма импорта не заботится о спецификации CSS, поэтому вы можете иметь @import в любом месте файла. Hugo будет искать импорт относительно точки монтирования модуля и будет учитывать переопределения темы. &lt;br /&gt;
&lt;br /&gt;
Если нет конфигурационного файла, применяются параметры:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;use&amp;lt;/code&amp;gt; — список плагинов PostCSS для использования&lt;br /&gt;
* &amp;lt;code&amp;gt;parser&amp;lt;/code&amp;gt; — Custom PostCSS parser&lt;br /&gt;
* &amp;lt;code&amp;gt;stringifier&amp;lt;/code&amp;gt; — Custom PostCSS stringifier&lt;br /&gt;
* &amp;lt;code&amp;gt;syntax&amp;lt;/code&amp;gt; — Custom PostCSS syntax&lt;br /&gt;
&lt;br /&gt;
Попробуйте:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
{{ $options := (dict &amp;quot;targetPath&amp;quot; &amp;quot;css/style.css&amp;quot; &amp;quot;outputStyle&amp;quot; &amp;quot;compressed&amp;quot; &amp;quot;enableSourceMap&amp;quot; true &amp;quot;includePaths&amp;quot; (slice &amp;quot;themes/simpleit/node_modules&amp;quot;)) }}&lt;br /&gt;
{{ $style := resources.Get &amp;quot;scss/main.scss&amp;quot; | toCSS $options | postCSS | minify | fingerprint }}&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;{{ $style.RelPermalink }}&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://blog.fullstackdigital.com/how-to-automatically-generate-and-inline-critical-css-with-hugo-pipes-48c52c2d8f82 How to Automatically Generate and Inline Critical CSS with Hugo Pipes]&lt;br /&gt;
* [https://regisphilibert.com/blog/2018/07/hugo-pipes-and-asset-processing-pipeline/ Hugo Pipes Revolution, A Hugo built&amp;amp;#45;in asset pipeline &amp;amp;#124; Regis Philibert]&lt;br /&gt;
* [https://xdeb.org/post/2019/03/10/using-hugo-pipes-to-process-sass-and-cache-bust-css-and-js-files/ Using Hugo pipes to process sass and cache&amp;amp;#45;bust css and js files – xdeb.org]&lt;br /&gt;
* [https://gohugo.io/news/0.43-relnotes/ And Now&amp;amp;#58; Hugo Pipes! &amp;amp;#124; Hugo]&lt;br /&gt;
* [https://discourse.gohugo.io/t/working-example-of-hugo-modules-and-bootstrap-scss-files/23090 Working example of Hugo Modules and Bootstrap .scss files? &amp;amp;#45; support &amp;amp;#45; HUGO]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Bootstrap]]&lt;br /&gt;
[[Категория:Sass]]&lt;/div&gt;</summary>
		<author><name>Romych</name></author>
	</entry>
</feed>