Минификатор и форматировщик JavaScript - Terser в браузере
Минификатор и форматировщик JavaScript
Сокращение локальных имён экономит больше всего байтов, но ломает код, который ищет имена как текст: eval, new Function или фреймворк, читающий имена параметров. Выключите, если полагаетесь на это.
Минификация JavaScript - частые вопросы
Самые популярные форматировщики
За всё времяЧто делает этот инструмент
Минифицировать JavaScript - это не убрать пробелы. Сделанное поиском с заменой, оно даёт файлы, которые выглядят нормально и ведут себя иначе, а разница вылезает в продакшене. Эта страница запускает Terser - тот самый движок за шагом сборки большинства проектов - прямо в вашем браузере.
Как пользоваться
- 1 Вставьте JavaScript в поле.
- 2 Выберите цель и решите, сокращать ли имена.
- 3 Нажмите «Минифицировать» - или «Форматировать», чтобы снова раскрыть сжатый файл.
Почему разбор, а не поиск с заменой
JavaScript сам ставит точки с запятой там, где вы их не поставили. Уберите перенос строки между «return» и значением - и функция начнёт возвращать undefined: файл всё ещё корректен, он просто делает другое. Один и тот же символ здесь деление, а там регулярное выражение. Различить это можно только по грамматике, а не по шаблону; поэтому здесь настоящий разборщик.
Что на самом деле уменьшается
Пробелы и комментарии - самая малая часть. Настоящая экономия идёт от переименования локальных переменных в одну букву, слияния отдельных объявлений, вычисления констант и выбрасывания недостижимого кода. Всё это операции над деревом: минификатор должен знать, что два имени - одна и та же связь и что между ними её никто не читает.
Где сокращение имён кусается
Минификатор может переименовать то, что видит. Он не видит имя, написанное как текст: eval("count + 1"), new Function("a", "return a") или фреймворк, читающий имена параметров, чтобы решить, что подставить. Они продолжают искать старое имя и не находят. Это свойство языка, а не изъян инструмента - поэтому переключатель оставлен вам.
Форматирование не возвращает исходный файл
Форматирование возвращает отступы и переносы, так что сжатый файл снова читается. Выброшенное оно не вернёт: комментариев нет, а если имена сокращали - они останутся короткими; ни один инструмент не угадает, что «e» когда-то было «errorMessage». Для отладки продакшен-файла оригинал возвращает только карта исходников.