Tree Shaking
Kurz: Tree Shaking entfernt beim Bauen einer Webanwendung Code, der nie benutzt wird. So wird das ausgelieferte JavaScript kleiner und lädt schneller.
Genauer: Der Bundler analysiert die import- und export-Anweisungen (ES-Module) und erkennt, welche Funktionen tatsächlich verwendet werden. Alles andere gilt als „toter Ast” und wird nicht ins Bundle aufgenommen.
Im Detail
- Voraussetzung: ES-Module (
import/export), nichtrequire(), weil nur sie statisch analysierbar sind. - Seiteneffekte: Code, der beim Import etwas tut (zum Beispiel Globals setzen), darf nicht entfernt werden. Mit
"sideEffects": falsein derpackage.jsonerklärt eine Bibliothek, dass sie frei davon ist. - Praxis: Aus einer großen Bibliothek nur das Nötige importieren (
import { debounce } from "lib"). - Prüfen: Ein Bundle-Analyzer zeigt, welche Pakete wie viel Platz belegen.
- Grenzen: Dynamisch aufgebaute Zugriffe (
lib[name]) kann kein Bundler vorhersehen.
Siehe auch: Lighthouse und Core Web Vitals