From ea0a7f238d933d20718cbc3544962358aa4645b1 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Fri, 7 Mar 2025 20:59:37 +0800 Subject: http/templates: Minify templates --- resources.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'resources.go') diff --git a/resources.go b/resources.go index 7ada53f..a25ddd6 100644 --- a/resources.go +++ b/resources.go @@ -8,6 +8,9 @@ import ( "html/template" "io/fs" "net/http" + + "github.com/tdewolff/minify/v2" + "github.com/tdewolff/minify/v2/html" ) // We embed all source for easy AGPL compliance. @@ -33,12 +36,38 @@ var resources_fs embed.FS var templates *template.Template func load_templates() (err error) { - templates, err = template.New("templates").Funcs(template.FuncMap{ + m := minify.New() + m.Add("text/html", &html.Minifier{ TemplateDelims: [2]string{"{{", "}}"}, KeepDefaultAttrVals: true }) + + templates = template.New("templates").Funcs(template.FuncMap{ "first_line": first_line, "base_name": base_name, "path_escape": path_escape, "query_escape": query_escape, - }).ParseFS(resources_fs, "templates/*") + }) + + err = fs.WalkDir(resources_fs, "templates", func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if !d.IsDir() { + content, err := fs.ReadFile(resources_fs, path) + if err != nil { + return err + } + + minified, err := m.Bytes("text/html", content) + if err != nil { + return err + } + + _, err = templates.Parse(string(minified)) + if err != nil { + return err + } + } + return nil + }) return err } -- cgit v1.2.3