Improved Docs minify (#17816)
Signed-off-by: UltralyticsAssistant <web@ultralytics.com> Co-authored-by: UltralyticsAssistant <web@ultralytics.com>
This commit is contained in:
parent
5b124dc7ca
commit
7c97ed1937
2 changed files with 33 additions and 24 deletions
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
|
|
@ -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 .
|
||||||
|
|
|
||||||
|
|
@ -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"')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue