Перейти к содержанию
100% локально

Анализатор webpack stats

Найдите, какие пакеты и модули занимают больше всего места в webpack-бандле.

Входные данные
Выходные данные

Анализатор webpack stats

Сгенерируйте stats.json из webpack (`webpack --json > stats.json`, или добавьте `stats: { modules: true }` в конфиг), и вставьте его сюда, чтобы увидеть, какие именно пакеты и модули раздувают ваш бандл. Это самый быстрый способ ответить на вопрос "почему мой бандл такой большой" без установки плагина bundle-analyzer или пересборки со специальными флагами — отчет читает JSON, который у вас уже есть.

Группируйте отчет по пакетам node_modules, чтобы увидеть, какая зависимость стоит дороже всего; по папкам, чтобы увидеть, какая часть вашего исходного кода самая тяжелая; или оставьте его без группировки, чтобы проверить отдельные модули один за другим. Опция «строк для отображения» ограничивает длинный отчет самыми крупными нарушителями; доля размера показывает размер каждой строки в контексте всего бандла; а если ваш stats.json содержит поле сжатого размера для каждого модуля (gzipSize или sizeGzip), включение колонки сжатого размера показывает оба числа рядом. Фильтрация по точке входа или названию чанка ограничивает всё одним бандлом, что полезно, когда приложение имеет более одного выходного файла.

Инструмент также отмечает пакеты, которые появляются в нескольких путях установки node_modules — это часто означает, что две зависимости требуют несовместимые версии одной библиотеки, и webpack заканчивает тем, что отправляет обе копии. Эти строки помечены в выводе, чтобы их было легко заметить даже в длинном отчете. Выберите табличный вывод для удобочитаемого отчета или CSV для вставки в электронную таблицу, если вы отслеживаете размер бандла с течением времени.

Всё работает в вашем браузере: stats.json анализируется локально и никогда не загружается никуда, поэтому его безопасно использовать с проприетарной кодовой базой. Скопируйте результат, загрузите его как .txt-файл или отправьте прямо в ввод другого инструмента, чтобы продолжить работу.

FAQ

Как сгенерировать stats.json?
Запустите webpack с флагом `webpack --json > stats.json`, или добавьте `stats: { modules: true }` в конфиг webpack, чтобы компилятор выводил данные модулей. Инструменту нужен массив "modules" верхнего уровня.
Что показывает группировка по пакету, чего не показывает группировка по папке?
Группировка по пакету объединяет все файлы под node_modules/react (например) в одну строку, так что вы можете увидеть общий размер зависимости. Группировка по папкам вместо этого показывает ваши собственные каталоги исходного кода, что более полезно для поиска слишком тяжёлой функции в вашем коде.
Почему это предупреждает о "дублирующихся" пакетах?
Когда две зависимости требуют разные версии одной библиотеки, npm или yarn может вложить вторую копию в node_modules вместо дедупликации. Этот инструмент обнаруживает имя пакета, которое появляется в нескольких путях установки, и отмечает его, так как удаление дубликата часто является простым способом уменьшить размер бандла.
Показывает ли он реальные размеры gzip, если stats.json их не содержит?
Нет. Сжатый размер показывается только при наличии поля gzipSize или sizeGzip для каждого модуля в stats.json — инструмент никогда не сжимает ничего сам, так как это означал бы переозапуск шага сборки. Без этого поля колонка сжатого размера показывает прочерк.
Мой stats.json загружается куда-нибудь?
Нет. Анализ и синтаксический анализ выполняются полностью в вашем браузере — файл никогда не покидает ваше устройство.