diff options
author | Rohan Kumar <seirdy@seirdy.one> | 2021-06-09 16:13:46 -0700 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-06-18 13:11:44 +0200 |
commit | 02f31897b4f7252154850a65c900e88e0b237fa3 (patch) | |
tree | 97a517c98892ec07d9e31e0a20e2c759e89db398 | |
parent | 402da3f8f327f97302c4b5d69cd4832a94bd189b (diff) |
media: support application/manifest+json
The standard file extension for Web App Manifest files is
".webmanifest". This commit allows Hugo to recognize .webmanifest files
as "application/manifest+json" files and to minify them using its
JSON minifier.
The .webmanifest file extension is recommended in the w3c spec to
simplify media type registration:
https://www.w3.org/TR/appmanifest/#media-type-registration
Webhint docs are also relevant:
https://webhint.io/docs/user-guide/hints/hint-manifest-file-extension/
Closes #8624
-rw-r--r-- | media/mediaType.go | 16 | ||||
-rw-r--r-- | minifiers/minifiers.go | 2 | ||||
-rw-r--r-- | output/outputFormat.go | 9 |
3 files changed, 19 insertions, 8 deletions
diff --git a/media/mediaType.go b/media/mediaType.go index 817ea1ba8..d3f212ad3 100644 --- a/media/mediaType.go +++ b/media/mediaType.go @@ -166,13 +166,14 @@ var ( TSXType = newMediaType("text", "tsx", []string{"tsx"}) JSXType = newMediaType("text", "jsx", []string{"jsx"}) - JSONType = newMediaType("application", "json", []string{"json"}) - RSSType = newMediaTypeWithMimeSuffix("application", "rss", "xml", []string{"xml"}) - XMLType = newMediaType("application", "xml", []string{"xml"}) - SVGType = newMediaTypeWithMimeSuffix("image", "svg", "xml", []string{"svg"}) - TextType = newMediaType("text", "plain", []string{"txt"}) - TOMLType = newMediaType("application", "toml", []string{"toml"}) - YAMLType = newMediaType("application", "yaml", []string{"yaml", "yml"}) + JSONType = newMediaType("application", "json", []string{"json"}) + WebAppManifestType = newMediaTypeWithMimeSuffix("application", "manifest", "json", []string{"webmanifest"}) + RSSType = newMediaTypeWithMimeSuffix("application", "rss", "xml", []string{"xml"}) + XMLType = newMediaType("application", "xml", []string{"xml"}) + SVGType = newMediaTypeWithMimeSuffix("image", "svg", "xml", []string{"svg"}) + TextType = newMediaType("text", "plain", []string{"txt"}) + TOMLType = newMediaType("application", "toml", []string{"toml"}) + YAMLType = newMediaType("application", "yaml", []string{"yaml", "yml"}) // Common image types PNGType = newMediaType("image", "png", []string{"png"}) @@ -206,6 +207,7 @@ var DefaultTypes = Types{ TSXType, JSXType, JSONType, + WebAppManifestType, RSSType, XMLType, SVGType, diff --git a/minifiers/minifiers.go b/minifiers/minifiers.go index e76e56afd..3ac285ecb 100644 --- a/minifiers/minifiers.go +++ b/minifiers/minifiers.go @@ -78,7 +78,7 @@ func New(mediaTypes media.Types, outputFormats output.Formats, cfg config.Provid } if !conf.DisableJSON { addMinifier(m, mediaTypes, "json", &conf.Tdewolff.JSON) - m.AddRegexp(regexp.MustCompile(`^(application|text)/(x-|ld\+)?json$`), &conf.Tdewolff.JSON) + m.AddRegexp(regexp.MustCompile(`^(application|text)/(x-|(ld|manifest)\+)?json$`), &conf.Tdewolff.JSON) } if !conf.DisableSVG { addMinifier(m, mediaTypes, "svg", &conf.Tdewolff.SVG) diff --git a/output/outputFormat.go b/output/outputFormat.go index a52f43c8b..a2ffd7993 100644 --- a/output/outputFormat.go +++ b/output/outputFormat.go @@ -143,6 +143,14 @@ var ( Rel: "alternate", } + WebAppManifestFormat = Format{ + Name: "WebAppManifest", + MediaType: media.WebAppManifestType, + BaseName: "manifest", + IsPlainText: true, + Rel: "manifest", + } + RobotsTxtFormat = Format{ Name: "ROBOTS", MediaType: media.TextType, @@ -176,6 +184,7 @@ var DefaultFormats = Formats{ CSVFormat, HTMLFormat, JSONFormat, + WebAppManifestFormat, RobotsTxtFormat, RSSFormat, SitemapFormat, |