Минифицировать JavaScript
Такой же минификатор, как в инструментах сборки, только работает прямо на этой странице. Современный синтаксис и модули поддерживаются, а ваш исходный код никогда не сохраняется.
- Не сохраняется
- Без очереди и ожидания
- Без регистрации и водяных знаков
Здесь появится минифицированный JavaScript.
Как это работает
Вставьте JavaScript
Или перетащите файл. Модули, классы и современный синтаксис поддерживаются.
Выберите параметры
Переименование локальных переменных, удаление вызовов console, сохранение лицензионных комментариев — у каждого свой переключатель.
Скопируйте или скачайте
С размером до и после.
Что переименовать, что удалить и чего касаться нельзя
Происходят три вещи — по возрастанию того, сколько они экономят и чего вам стоят. Удаляются пробелы и комментарии — это бесплатно. Удаляется мёртвый код: ветка, которая никогда не выполнится, переменная, которой присвоили значение и ни разу его не прочитали. И сокращаются локальные имена, так что старательно названная calculateMonthlyTotal превращается в одну букву. Именно здесь основная экономия, и именно это делает результат нечитаемым: для выкладки это нормально, для отладки бесполезно.
Нельзя переименовывать ничего, к чему внешний мир обращается по имени, — именно на этом минификаторы ломают код. Экспортируемые функции, свойства объектов, к которым обращаются по строке, всё, что доступно через window, и имена, используемые в eval, должны остаться нетронутыми, потому что где-то ещё их ищут по тому имени, которое вы написали. Свойства по умолчанию особенно не трогаются: переименование user.emailAddress сломается в тот момент, когда объект сериализуют в JSON или прочитает код, минифицированный отдельно.
Сохраняйте карту исходного кода или оригинал. Когда имён больше нет, стек вызовов от реального пользователя выглядит как ошибка в функции t на символе 48 213 — и ни о чём вам не говорит. Карта исходного кода (source map) восстанавливает в отладчике и в отчётах об ошибках исходные имена и номера строк, а её создание ничего не стоит: это отдельный файл, который загружается, только когда кто-то открывает инструменты разработчика.
Лицензионные комментарии по умолчанию сохраняются, и это юридическая позиция, а не вкусовое предпочтение. Очень много открытого кода распространяется по свободной лицензии с единственным условием: уведомление об авторских правах должно идти вместе с кодом — MIT и BSD говорят об этом прямо. Удалив эти комментарии из бандла со сторонним кодом, вы нарушаете ту самую лицензию, которая позволила вам его использовать. А весят они несколько сотен байт.
Если нужно другое
Этому место в сборке, а не во вкладке браузера, и современные сборщики делают это сами собой. esbuild --minify, Rollup и Vite минифицируют при сборке, автоматически создают карты исходного кода и — что гораздо важнее — выполняют tree shaking, отбрасывая те экспорты ваших зависимостей, которые вы никогда не импортируете. В реальном приложении это экономит несравнимо больше, чем минификация готового файла.
Прежде чем оптимизировать, измерьте. Анализатор бандла обычно показывает, что большую часть файла занимает одна крупная зависимость — библиотека для дат, набор иконок, пакет для графиков, подключённый целиком ради одного графика. Заменить её или загружать лениво — выгоднее любой минификации, а разделение кода, при котором страница загружает только то, что ей нужно, выгоднее и того и другого.
Частые вопросы
Мой код где-нибудь сохраняется?
Нет, и для исходного кода в этом весь смысл. Ничего не сохраняется, и ни один сервер его не видит. Вставить закрытый исходный код в онлайн-минификатор, который куда-то его отправляет, — это раскрытие информации, что бы сайт ни писал о сроках хранения. И это как раз то, что делают в спешке, не задумываясь.
Это тот же минификатор, что в моём инструменте сборки?
Почти наверняка да. Это минификатор того же типа, что используют webpack, Rollup, Vite и большинство других сборщиков. Разница лишь в том, что он работает здесь, а не устанавливается у вас.
Изменится ли поведение моего кода?
Не должно, и это проверяется, а не предполагается: наши тесты минифицируют модуль, импортируют и оригинал, и минифицированную версию, запускают их и сравнивают результаты. Что ДЕЙСТВИТЕЛЬНО меняется: имена локальных переменных (если вы это не отключите), константные выражения, которые можно вычислить заранее, и мёртвый код. Всё, что зависит от имени функции во время выполнения или от Function.prototype.toString, может сломаться при переименовании — если вы на это полагаетесь, отключите его.
Что означает «Разбирать как модуль»?
Это выбор, разбирать ли код как ES-модуль или как обычный скрипт. В модулях можно использовать import и export, и они всегда работают в строгом режиме. По умолчанию параметр включён, потому что так написана большая часть современного кода; если ваш файл — скрипт в старом стиле, который использует "with" или полагается на нестрогий режим, выключите его.
Стоит ли удалять вызовы console?
Для продакшена обычно да: это шум, и они могут раскрыть внутренние подробности любому, кто откроет инструменты разработчика. По умолчанию это выключено, потому что инструмент не должен молча удалять код, если его об этом не просили.
Сохраняются ли лицензионные комментарии?
Да, по умолчанию. Комментарии, начинающиеся с /*!, и комментарии, содержащие @license или @preserve, сохраняются, потому что их удаление из чужой библиотеки под лицензией MIT — нарушение лицензии. Обычные комментарии удаляются.
Можно ли получить карту исходного кода?
Не на этой странице. Карта исходного кода (source map) полезна только рядом с исходным файлом по известному адресу, а это не вяжется с инструментом «вставил и скопировал» — для этого правильное место ваш инструмент сборки.
Есть ли ограничение по размеру?
Фиксированного нет. Несколько тысяч строк минифицируются намного быстрее секунды; очень большой собранный файл обрабатывается дольше, потому что прежде чем что-либо переименовать, разбирается весь файл целиком. Если вы минифицируете весь продакшен-бандл, лучше делать это в инструменте сборки — эта страница для отдельного файла или быстрой проверки.
Полезно знать: Переименование локальных переменных уменьшает файл и делает результат нечитаемым: для выкладки это нормально, для отладки бесполезно — сохраните карту исходного кода (source map) или оригинал. Лицензионные комментарии по умолчанию сохраняются, потому что их удаление может нарушить лицензию кода, который вам разрешено использовать.
Разместите этот инструмент на своём сайте
Бесплатно для любого блога, страницы класса или справочной статьи. Вставьте один фрагмент кода — и посетители смогут пользоваться инструментом прямо на вашей странице.
Похожие инструменты
Минификатор CSS
Сожмите стили или узнайте, почему нельзя
Минификатор HTML
Сожмите HTML, не сломав страницу
Форматировать JSON
Нечитаемый JSON станет читаемым
Кодировать в Base64
Текст или файл в Base64
Удалить повторяющиеся строки
Уберите повторы, отсортируйте и приведите список в порядок
Изменить регистр текста
ВЕРХНИЙ, нижний, Как В Заголовке, camelCase и другие