Was ist jampack?
jampack ist weder ein Bundler noch ein Framework, sondern ein Nachbearbeitungstool, das die Ausgabe von Static Site Generators (SSG) optimiert, um die User Experience und die Core Web Vitals-Werte zu verbessern.
Was kann jampack tun?
- Bilder in
<img>-Tags werden in responsive Bilder umgewandelt, die verschiedene Auflösungen unterstützen, und es werden die Attribute loading="lazy" und decoding="async" hinzugefügt, um die Performance zu verbessern.
- Bilder werden mit dem
<picture>-Tag in responsive Bilder mit mehreren Formaten umgewandelt; auch das AVIF-Format wird unterstützt.
- CDN-Bilder werden in responsive Bilder umgewandelt, sodass Bilder in verschiedenen Auflösungen über
srcset bereitgestellt werden.
- Externe Bilder können heruntergeladen und optimiert werden; die optimierten Bilddateien werden im Ordner
_jampack gespeichert.
- Bilder, die sofort auf dem Bildschirm sichtbar sind (above the fold), werden mit hoher Priorität geladen, während Bilder, die erst beim Herunterscrollen sichtbar werden (below the fold), per Lazy Loading geladen werden.
Kritisches CSS inline einbetten
- Um FOUC (Flash of Unstyled Content) zu verhindern, das während des Herunterladens und Parsens von Stylesheets auftreten kann, bettet
jampack kritisches CSS inline ein und lädt das restliche CSS verzögert.
Links vorab laden
- Links auf der Seite werden vorab geladen, um die Geschwindigkeit zukünftiger Seitennavigation zu verbessern. Dank quicklink können Links, die in den Viewport kommen, dynamisch vorab geladen werden.
Alle Assets komprimieren
jampack komprimiert in einem zweiten Durchlauf alle unberührten Assets und behält dabei denselben Namen und dasselbe Format bei. Für verschiedene Dateierweiterungen werden jeweils passende Komprimierungstools verwendet.
Und viele weitere Funktionen!
- Mit dem Befehl
npx @divriots/jampack ./dist kann jampack die statische Website im Ordner dist optimieren.
Beispiele für den Einsatz von jampack
jampack wird auf verschiedenen Websites eingesetzt, darunter die Website von ‹div›RIOTS, keycloak.ch und bayjs.org.
Herkunft des Namens jampack
jam: abgeleitet von Jamstack.
pack: erinnert an ausführbare Datei-Packer (Executable Packers) aus den 90er-Jahren.
Lizenz
- Diese Software wird unter den Bedingungen der MIT-Lizenz veröffentlicht.
Meinung von GN⁺
jampack kann ein nützliches Tool für Einsteiger unter den Software Engineers sein, die sich stark für Web-Performance-Optimierung interessieren. Besonders für Entwickler, die Performance-Metriken wie Core Web Vitals wichtig finden, dürfte es hilfreich sein.
- Das Tool bietet nicht nur Bildoptimierung, sondern auch verschiedene Web-Optimierungsfunktionen wie CSS- und JavaScript-Komprimierung, wodurch sich die Seitenladezeit verkürzen und die User Experience verbessern lässt.
- Aus kritischer Sicht kann der Einsatz eines Tools wie
jampack die Komplexität einer Website erhöhen und bei falscher Verwendung sogar Performance-Probleme verursachen. Daher sind vor dem Einsatz gründliche Tests und Prüfungen erforderlich.
- Für die Optimierung der Web-Performance gibt es bereits viele Tools, zum Beispiel Google Lighthouse oder WebPageTest. Zusammen mit solchen Tools kann
jampack genutzt werden, um die Performance einer Website ganzheitlich zu analysieren und zu verbessern.
- Bei der Einführung von
jampack sollte unter Berücksichtigung der Website-Struktur und des eingesetzten Tech-Stacks eine Optimierungsstrategie festgelegt werden. Der Einsatz eines Open-Source-Tools bietet zwar den Vorteil von Community-Support, aber auch die Verantwortung für die Kontinuität und Wartung des Projekts sollte bedacht werden.
1 Kommentare
Hacker-News-Kommentare
Dieser Nutzer erwähnt, dass er gefunden hat, wonach er gesucht hat. Er hatte die Bildoptimierung zuvor mit einem eigenen Skript unter Verwendung von Sharp durchgeführt, aber nach dem Einsatz von Jampack sei das nicht mehr nötig gewesen. Nachdem er seine statische Quarto-Seite gebaut und anschließend Jampack ausgeführt habe, habe sich die Ordnergröße um 32 % verringert, und bisher habe er keine auffälligen Nachteile bemerkt. Er teilt Leistungskennzahlen vor und nach dem Einsatz von Jampack mit Hilfe von PageSpeed Insights.
Ein anderer Nutzer erwähnt, dass ihn diese Funktion an das PageSpeed-Modul für Apache und Nginx erinnert.
Ein Nutzer sagt, dass ihm Jampack gefällt und er es verwenden würde, und fragt, auf welche Schwächen Menschen mit einer kritischeren Meinung hinweisen könnten. Er meint, Jampack mache etwas Ähnliches wie das Kompilieren von C-Code in optimierten Assembler und übernehme Arbeiten, die er persönlich nicht selbst erledigen möchte.
Ein weiterer Nutzer interessiert sich für das Konzept, „kritisches“ CSS zu identifizieren und inline zu verarbeiten. Er hatte gehofft, es gäbe eine prinzipielle Methode, nicht kritisches CSS zu identifizieren, aber die verwendete Bibliothek scheint die Seite zu rendern und dann nach bestem Wissen zu erkennen, welche Regeln wichtig sind.
Ein Nutzer würde gern sehen, wie Schriften teilweise anhand der Unicode-Bereiche der SSG-Ausgabe ausgewählt werden und wie OpenType-Achsen entsprechend den in CSS definierten
font-feature-settingsfestgelegt werden.Ein Nutzer, der Jampack sehr cool findet, fragt, ob man für Leute, die sich vor Node.js fürchten, einen Docker-Container erstellen könnte, um die Nutzung zu vereinfachen.
Ein Nutzer, der Webpage-Layouts hasst und sich weigert, sie zu lernen, aber sie gelegentlich dennoch machen muss, erwähnt, dass Jampack großartig aussieht.
Es gibt einen Nutzer, der fragt, welche Static Site Generatoren tatsächlich in Produktionsumgebungen verwendet werden. Er glaubt, dass man mit solchen Tools die Ausgabe weiter optimieren könnte. Er hat zum Beispiel den ganzen Tag versucht, eine Divjoy-React-Website in einfaches HTML umzuwandeln, das aus einem S3-Bucket bereitgestellt werden kann, hatte dabei aber Schwierigkeiten. Er braucht ein Tool, das automatisch in einen S3-Bucket deployen und eine Domain darauf zeigen kann.
Ein Nutzer merkt an, dass Jampack offenbar viele Anwendungsfälle abdeckt, die SSGs und deren Plugins zu behandeln versuchen. Er fragt sich, ob man Astro oder Eleventy wegen einer Präferenz für einen separaten Post-Build-Schritt wählen würde. Es könnte einen Trade-off geben zwischen schnellen Rebuilds während der Entwicklung und der Möglichkeit, subtile Bugs zu übersehen, die durch Dinge wie deklarierte Bildbreiten entstehen.
Ein Nutzer bedankt sich bei den Leuten, die echte Beispiele per E-Mail schicken. Er sagt, dass er für diese Unterstützung sehr dankbar ist.