gohugoio / hugo

The world’s fastest framework for building websites.
https://gohugo.io
Apache License 2.0
75.61k stars 7.52k forks source link

Make `hugo --minify` work on non-HTML content (e.g. JSON, XML) #11957

Open CppXL opened 9 months ago

CppXL commented 9 months ago

What version of Hugo are you using (hugo version)?

$ hugo version
hugo v0.122.0-b9a03bd59d5f71a529acb3e33f995e0ef332b3aa windows/amd64 BuildDate=2024-01-26T15:54:24Z VendorInfo=gohugoio

Does this issue reproduce with the latest release?

use the flowing xml to generate rss feed information,

{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
<rss version="2.0"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>{{ if eq  .Title  .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
        <link>{{ .Permalink }}</link>
        <description>Recent content {{ if ne  .Title  .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
        <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
        <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
        <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
        <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
        <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
        <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
    {{ with .OutputFormats.Get "RSS" }}
        {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
    {{ end }}
    {{ range .Pages }}
    <item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
      <guid>{{ .Permalink }}</guid>
<description>{{ .Content | html }}</description>
<!-- <content:encoded>{{ .Content | safeHTML }}</content:encoded> -->
</item>
    {{ end }}
  </channel>
</rss>

then run

hugo --minify

content:

- 16.1 to 16.1.5
- 16.2 to 16.2.8
- 16.3 to 16.3.6
- 16.4 to 16.4.4
- 16.5 to 16.5.5
- 16.6 to 16.6.3
- 16.7 to 16.7.1

output:

&lt;ul>
&lt;li>16.1 to 16.1.5&lt;/li>
&lt;li>16.2 to 16.2.8&lt;/li>
&lt;li>16.3 to 16.3.6&lt;/li>
&lt;li>16.4 to 16.4.4&lt;/li>
&lt;li>16.5 to 16.5.5&lt;/li>
&lt;li>16.6 to 16.6.3&lt;/li>
&lt;li>16.7 to 16.7.1&lt;/li>
&lt;/ul>
bep commented 9 months ago

I'm not sure about the "encoding part", but --minify currently only works on output formats that's of HTML type (isHTML: true).