Tiny Online Tools logoTiny Online ToolssearchTools suchen…grid_viewAlle Tools
Startseitechevron_rightReverse-Engineering-Werkzeugechevron_rightJS-Bundle-Abhängigkeits-VisualisiererJS-Bundle-Abhängigkeits-Visualisierer

JS-Bundle-Abhängigkeits-Visualisierer

Findet Modulgrenzen in einem webpack-, Rollup-, esbuild- oder Vite-Bundle und zeigt, welches Modul welches benötigt – per echter AST-Formerkennung, nicht durch Text-Raten.

Bundle-QuelleCode einfügenDatei hochladen

Ahnliche Tools

Webpack-Bundle-Inspektor

Webpack-Bundle-Inspektor

Erkennt webpacks Runtime-Bootstrap, die Modulkarte und chunk-push-Metadaten per AST-Form, zeigt den echten Quelltext jedes Moduls und sagt klar, wenn eine Datei kein webpack-Output ist.

Source-Map-Größenanalyse

Source-Map-Größenanalyse

Ordne die Bytes eines Bundles anhand seiner .map-Datei den Originaldateien und -ordnern zu, die sie erzeugt haben — sieh, was wirklich Platz beansprucht.

WASM Import/Export-Visualisierer

WASM Import/Export-Visualisierer

Sehen Sie, was ein WebAssembly-Modul von seinem Host benötigt und was es zurückbietet, gruppiert nach Namensraum, nebeneinander.

Binär-Entropie-Visualisierer

Binär-Entropie-Visualisierer

Zeichnen Sie die Shannon-Entropie einer beliebigen Datei mit einem gleitenden Fenster auf, um komprimierte, verschlüsselte oder gepackte Bereiche zu erkennen, mit überlagerten Sektionsgrenzen.

Fake-Adressen-Generator

Fake-Adressen-Generator

Erzeugen Sie zufällige Fake-Postadressen für acht Länder mit Straße, Stadt, Region, Postleitzahl und Land.

Bild-Metadaten-Betrachter

Bild-Metadaten-Betrachter

Lesen Sie EXIF- und Metadaten aus JPEG-, PNG- und WebP-Bildern einschliesslich GPS-Koordinaten.

WASM-Decompiler

WASM-Decompiler

Verwandeln Sie eine WebAssembly-Binärdatei in lesbaren WAT-Text, mit Aufruf-Graph pro Funktion, Kontrollfluss-Form und einer bestmöglichen Toolchain-Vermutung.

apps

Mehr Tools

Durchsuchen Sie unsere vollstandige Sammlung kostenloser Online-Tools.

Was dieses Tool findet

Moderne Websites liefern eine einzige JavaScript-Datei aus, gebaut aus Hunderten Quelldateien. Dieses Tool schaut in diese Datei hinein und versucht, die ursprünglichen Modulgrenzen zu rekonstruieren – bundler-unabhängig, anhand der echten AST-Form statt Textmustern, die sofort versagen, sobald der Code minifiziert ist.

Es versucht, in dieser Reihenfolge:

  1. webpacks function-map-Form — eine IIFE, deren Argument ein Objekt oder Array ist, in dem jeder Eintrag eine (module, exports, require)-Funktion ist. Das erkennt auch den klassischen webpackUniversalModuleDefinition-Wrapper, egal wie tief der eigentliche Modulkarten-Aufruf verschachtelt ist.
  2. webpacks chunk-push-Form(self.webpackChunkXxx = self.webpackChunkXxx || []).push([ids, {modules}, runtime]), die Form, die das Code-Splitting von webpack 5 erzeugt.
  3. Rollup-/esbuild-/Vite-Kommentarbanner — manche unminifizierten Builds dieser Familie behalten vor dem Code jedes Moduls einen // pfad/zur/datei.js-Zeilenkommentar. Wenn vorhanden, werden daraus die Modulgrenzen.
  4. Ehrlicher Fallback — wenn nichts davon gefunden wird (fast immer weil das Bundle ein minifizierter, scope-gehoisteter Rollup-/esbuild-/Vite-Build ohne jegliche Grenzmarker ist), sagt das Tool das offen und listet stattdessen die Top-Level-Deklarationen der Datei, statt eine Modulliste zu erfinden.

Das Ergebnis lesen

Wenn Module gefunden werden, listet jedes auf, was es per literaler Modul-ID require()t, und ebenso nützlich, welche anderen Module es selbst benötigen — so lässt sich „was bricht, wenn ich das entferne" in beide Richtungen nachverfolgen, ohne irgendetwas auszuführen.

Ehrlichkeit als Designprinzip

Dynamische Requires (require(variable)) und import()-Aufrufe lassen sich nicht statisch auflösen und werden deshalb einfach aus der Abhängigkeitsliste weggelassen — das kann Abhängigkeiten unterzählen, aber nie eine erfinden. Ebenso wird eine Modul-ID, die von einem require()-Aufruf referenziert wird, aber nicht in der erkannten Karte steckt, weiterhin als Kantenziel angezeigt, auch ohne eigene Karte; das bedeutet meist, dass sie in einem anderen, hier nicht eingefügten Chunk lebt.

Datenschutz

Alles läuft im Browser über einen echten JavaScript-Parser (acorn). Das eingefügte oder hochgeladene Bundle wird niemals irgendwohin gesendet.