Improved Docs minify (#17816)

Signed-off-by: UltralyticsAssistant <web@ultralytics.com>
Co-authored-by: UltralyticsAssistant <web@ultralytics.com>
This commit is contained in:
Glenn Jocher 2024-11-26 21:10:03 +01:00 committed by GitHub
parent 5b124dc7ca
commit 7c97ed1937
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 24 deletions

View file

@ -48,7 +48,7 @@ jobs:
python-version: "3.x" python-version: "3.x"
- uses: astral-sh/setup-uv@v4 - uses: astral-sh/setup-uv@v4
- name: Install Dependencies - name: Install Dependencies
run: uv pip install --system ruff black tqdm mkdocs-material "mkdocstrings[python]" mkdocs-jupyter mkdocs-redirects mkdocs-ultralytics-plugin mkdocs-macros-plugin run: uv pip install --system ruff black tqdm mkdocs-material "mkdocstrings[python]" mkdocs-jupyter mkdocs-redirects mkdocs-ultralytics-plugin mkdocs-macros-plugin csscompressor jsmin
- name: Ruff fixes - name: Ruff fixes
continue-on-error: true continue-on-error: true
run: ruff check --fix --unsafe-fixes --select D --ignore=D100,D104,D203,D205,D212,D213,D401,D406,D407,D413 . run: ruff check --fix --unsafe-fixes --select D --ignore=D100,D104,D203,D205,D212,D213,D401,D406,D407,D413 .

View file

@ -238,32 +238,41 @@ def remove_macros():
print(f"Removed {len(macros_indices)} URLs containing '/macros/' from {sitemap}") print(f"Removed {len(macros_indices)} URLs containing '/macros/' from {sitemap}")
def minify_html_files(): def minify_files(html=True, css=True, js=True):
"""Minifies all HTML files in the site directory and prints reduction stats.""" """Minifies HTML, CSS, and JS files and prints total reduction stats."""
minify, compress, jsmin = None, None, None
try: try:
from minify_html import minify # pip install minify-html if html:
except ImportError: from minify_html import minify
if css:
from csscompressor import compress
if js:
import jsmin
except ImportError as e:
print(f"Missing required package: {str(e)}")
return return
total_original_size = 0 stats = {}
total_minified_size = 0 for ext, minifier in {
for html_file in tqdm(SITE.rglob("*.html"), desc="Minifying HTML files"): "html": (lambda x: minify(x, keep_closing_tags=True, minify_css=True, minify_js=True)) if html else None,
with open(html_file, encoding="utf-8") as f: "css": compress if css else None,
content = f.read() "js": jsmin.jsmin if js else None,
}.items():
if not minifier:
continue
original_size = len(content) stats[ext] = {"original": 0, "minified": 0}
minified_content = minify(content, keep_closing_tags=True, minify_css=True, minify_js=True) for f in tqdm(SITE.rglob(f"*.{ext}"), desc=f"Minifying {ext.upper()}"):
minified_size = len(minified_content) content = f.read_text(encoding="utf-8")
minified = minifier(content)
stats[ext]["original"] += len(content)
stats[ext]["minified"] += len(minified)
f.write_text(minified, encoding="utf-8")
total_original_size += original_size for ext, data in stats.items():
total_minified_size += minified_size if data["original"]:
r = data["original"] - data["minified"] # reduction
with open(html_file, "w", encoding="utf-8") as f: print(f"Total {ext.upper()} reduction: {(r / data['original']) * 100:.2f}% ({r / 1024:.2f} KB saved)")
f.write(minified_content)
total_reduction = total_original_size - total_minified_size
total_percent_reduction = (total_reduction / total_original_size) * 100
print(f"Minify HTML reduction: {total_percent_reduction:.2f}% " f"({total_reduction / 1024:.2f} KB saved)")
def main(): def main():
@ -279,8 +288,8 @@ def main():
# Update docs HTML pages # Update docs HTML pages
update_docs_html() update_docs_html()
# Minify HTML files # Minify files
minify_html_files() minify_files(html=False)
# Show command to serve built website # Show command to serve built website
print('Docs built correctly ✅\nServe site at http://localhost:8000 with "python -m http.server --directory site"') print('Docs built correctly ✅\nServe site at http://localhost:8000 with "python -m http.server --directory site"')