Attemopting to minify deploy files.
Some checks are pending
lint / runner / vale (push) Waiting to run
Lint / MegaLinter (push) Waiting to run

This commit is contained in:
g_it 2026-03-14 23:35:53 +01:00
commit 21f024a6c0
Signed by untrusted user who does not match committer: g_it
GPG key ID: A2B0A7C06A054627
3 changed files with 58 additions and 0 deletions

View file

@ -4,6 +4,7 @@ COPY . .
RUN pip install --no-cache-dir -r ./requirements.txt RUN pip install --no-cache-dir -r ./requirements.txt
RUN zensical build RUN zensical build
RUN rm ./deploy/sitemap.xml RUN rm ./deploy/sitemap.xml
RUN python minify.py
FROM caddy:alpine FROM caddy:alpine
COPY --from=builder /app/deploy /usr/share/caddy COPY --from=builder /app/deploy /usr/share/caddy

54
minify.py Executable file
View file

@ -0,0 +1,54 @@
#!/usr/bin/env python3
"""Minify CSS, JS, and HTML files in the deploy directory in-place."""
import sys
from pathlib import Path
import htmlmin
import rcssmin
import rjsmin
DEPLOY_DIR = Path("./deploy")
def minify_css():
for css_file in DEPLOY_DIR.rglob("*.css"):
content = css_file.read_text(encoding="utf-8")
minified = rcssmin.cssmin(content)
css_file.write_text(minified, encoding="utf-8")
print(f" CSS: {css_file}")
def minify_js():
for js_file in DEPLOY_DIR.rglob("*.js"):
if js_file.name.endswith(".min.js"):
continue
content = js_file.read_text(encoding="utf-8")
minified = rjsmin.jsmin(content)
js_file.write_text(minified, encoding="utf-8")
print(f" JS: {js_file}")
def minify_html():
for html_file in DEPLOY_DIR.rglob("*.html"):
content = html_file.read_text(encoding="utf-8")
minified = htmlmin.minify(
content,
remove_comments=True,
remove_empty_space=True,
reduce_boolean_attributes=True,
)
html_file.write_text(minified, encoding="utf-8")
print(f" HTML: {html_file}")
if __name__ == "__main__":
if not DEPLOY_DIR.exists():
print(f"Error: deploy directory not found at {DEPLOY_DIR}", file=sys.stderr)
sys.exit(1)
print("Minifying assets...")
minify_css()
minify_js()
minify_html()
print("Done.")

View file

@ -5,6 +5,7 @@ ghp-import==2.1.0
griffe==1.15.0 griffe==1.15.0
griffecli==2.0.0 griffecli==2.0.0
griffelib==2.0.0 griffelib==2.0.0
htmlmin==0.1.12
Jinja2==3.1.6 Jinja2==3.1.6
Markdown==3.10.2 Markdown==3.10.2
MarkupSafe==3.0.3 MarkupSafe==3.0.3
@ -22,6 +23,8 @@ pymdown-extensions==10.21
python-dateutil==2.9.0.post0 python-dateutil==2.9.0.post0
PyYAML==6.0.3 PyYAML==6.0.3
pyyaml_env_tag==1.1 pyyaml_env_tag==1.1
rcssmin==1.2.2
rjsmin==1.2.4
six==1.17.0 six==1.17.0
watchdog==6.0.0 watchdog==6.0.0
zensical==0.0.27 zensical==0.0.27