Что находит инструмент
Современные сайты отдают один JavaScript-файл, собранный из сотен исходных файлов. Этот инструмент заглядывает внутрь такого файла и пытается восстановить исходные границы модулей — независимо от сборщика, опираясь на реальную структуру AST, а не на текстовые шаблоны, которые перестают работать сразу после минификации кода.
Он пробует по порядку:
- Форма function-map webpack — IIFE, аргумент которой — объект или массив, где каждая запись — функция
(module, exports, require). Это распознаёт и классическую обёрткуwebpackUniversalModuleDefinition, независимо от того, насколько глубоко вложен настоящий вызов карты модулей. - Форма chunk-push webpack —
(self.webpackChunkXxx = self.webpackChunkXxx || []).push([ids, {modules}, runtime]), форма, которую производит разбиение кода на чанки в webpack 5. - Комментарии-баннеры Rollup / esbuild / Vite — некоторые неминифицированные сборки этого семейства сохраняют строчный комментарий
// путь/к/файлу.jsперед кодом каждого модуля. При наличии они становятся границами модулей. - Честный запасной вариант — если ничего из перечисленного не найдено (почти всегда потому, что бандл — это минифицированная, со сплющенной областью видимости сборка Rollup/esbuild/Vite без каких-либо маркеров границ), инструмент прямо об этом сообщает и вместо выдумывания списка модулей показывает объявления верхнего уровня файла.
Как читать результат
Когда модули найдены, для каждого перечислено, что он require()-ит по буквальному id модуля, и, не менее полезно, какие другие модули зависят от него самого — так можно проследить «что сломается, если убрать это» в любом направлении, ничего не выполняя.
Честность как принцип
Динамические require (require(переменная)) и вызовы import() нельзя разрешить статически, поэтому они просто не попадают в список зависимостей — это может занижать число зависимостей, но никогда не придумает лишнюю. Точно так же id модуля, на который ссылается вызов require(), но которого нет в обнаруженной карте, всё равно показывается как цель связи, хотя своей карточки у него нет; обычно это значит, что он находится в другом чанке, который сюда не вставили.
Приватность
Всё выполняется в браузере через настоящий парсер JavaScript (acorn). Вставленный или загруженный бандл никуда не отправляется.
Tiny Online Tools






