UglifyJS


Описание UglifyJS

Набор инструментов UglifyJS выполняет различные действия с кодом, написанном на JavaScript не изменяя его функциональность.

Программа умеет парсить, сжимать, обфусцировать или, наоборот, делать более читаемым скрипты JavaScript.

Домашняя страница: http://lisperator.net/uglifyjs/

GitHub: https://github.com/mishoo/UglifyJS

Автор: Mihai Bazon

Лицензия: BSD

Справка по UglifyJS

Использование:

uglifyjs [входные файлы] [опции]

UglifyJS может принять несколько входных файлов. Рекомендуется вначале передавать входные файлы, а затем опции. UglifyJS будет парсить входные файлы в последовательности, в которой они указаны и применять любые опции сжатия. Файлы анализируются в одной и той же глобальной области видимости, то есть ссылка из файла на некоторую переменную/функцию, объявленную в другом файле, будет сопоставлена надлежащим образом.

Если файл не указан, то UglifyJS будет считывать из стандартного ввода (STDIN).

Если вы хотите передать параметры перед входными файлами, отделите их двойным тире, чтобы входные файлы не трактовались в качестве аргументов параметров:


uglifyjs --compress --mangle -- input.js

Опции командной строки:

    -h, --help                  Напечатать справку.
                                `--help options` для подробностей о доступных опциях.
    -V, --version               Напечатать номер версии.
    -p, --parse <опции>       Опции парсера:
                                `acorn`  Использовать для парсинга Acorn
                                `bare_returns`  Разрешить return вне функций.
                                                Полезно когда обрабатываются модули 
                                                CommonJS и Userscripts которые могут
                                                могут быть обёрнуты анонимной функцией (IIFE)
                                                с .user.js движком `caller`.
                                `expression`  Анализировать единичное выражение, а не
                                              программу (для разбора JSON).
                                `spidermonkey`  Исходить из того, что анализируемый файл в SpiderMonkey
                                                AST формате (как JSON).
    -c, --compress [опции]    Включить сжатие/указать опции сжатия:
                                `pure_funcs`  Список функций, которые могут быть безопасно
                                              удалены когда их возвращаемые значения
                                              не используются.
    -m, --mangle [опции]      Кромсать имена/указать опции искажения имён:
                                `reserved`  Список имён, которые не надо трогать.
    --mangle-props [опции]    Кромсать свойства/указать опции искажения:
                                `builtins`  Изменять имена свойств, которые пересекаются
                                            со стандартными глобальными JavaScript.
                                `debug`  Добавить debug префикс и суффикс.
                                `domprops`  Изменять имена свойств, которые пересекаются 
                                            со свойствами DOM
                                `keep_quoted`  Изменять только свойства, которые не помещены в кавычки.
                                `regex`  Менять только совпадающие с шаблоном имена свойств.
                                `reserved`   Список имён, которые не надо трогать.
    -b, --beautify [опции]    Улучшить читаемость/указать опции вывода:
                                `beautify`  Включена с `--beautify` по умолчанию.
                                `preamble`  Преамбула для подготовки к выводу. Вы 
                                            можете использовать это, чтобы вставить комментарий,
                                            например, для информации о лицензировании.
                                            Это не будет проанализировано, но исходная карта 
                                            будет корректироваться с учётом его присутствия.
                                `quote_style`  Стиль кавычек:
                                               0 - auto
                                               1 - одинарные
                                               2 - двойные
                                               3 - исходные
                                `wrap_iife`  Обернуть IIFE в скобках. Примечание: вы можете
                                             отключить `negate_iife` в
                                             настройках компрессора.
    -O, --output-opts [опции] Указать опции вывода (`beautify` отключена по умолчанию).
    -o, --output <файл>         Путь файла вывода (по умолчанию STDOUT). Укажите `ast` или
                                `spidermonkey` для записи соответственно AST или 
                                SpiderMonkey как JSON в STDOUT.
    --comments [фильтр]         Сохранить в выводе комментарий об авторских правах. По
                                умолчанию это работает как Google Closure, сохраняя
                                JSDoc-style комментарии, которые содержат "@license" или
                                "@preserve". Опционально вы можете передать один из
                                следующих аргументов в этот флаг:
                                - "all" для сохранения всех комментариев
                                - валидное выражение JS RegExp как `/foo/` или `/^!/` для
                                сохранения только подходящих комментариев.
                                Обратите внимание, что в настоящее время не все комментарии могут быть 
                                сохранены при включённом сжатии из-за удаления мёртвого 
                                кода или каскадных операторов в 
                                последовательности.
    --config-file <файл>        Прочитать `minify()` опции из файла JSON.
    -d, --define <выражение>[=значение] Глобальные определения.
    -e, --enclose [аргумент[:значение]] Внедрить всё в большую функцию, с настраиваемыми
                                аргументами и значениями.
    --ie8                       Поддерживать не-стандартный Internet Explorer 8.
                                Эквивалент установки `ie8: true` в `minify()`
                                для `compress`, `mangle` и `output` опции.
                                По умолчанию UglifyJS не будет пытаться что-то делать для IE.
    --keep-fnames               Не кромсать/отбрасывать имена функций.  Полезно для
                                кода, полагающегося на Function.prototype.name.
    --name-cache <файл>         Файл для хранения сопоставлений искажённых имён.
    --self                      Собрать UglifyJS как библиотеку (подразумевает --wrap UglifyJS)
    --source-map [опции]      Включить карту ресурсов/указать опции карты ресурсов:
                                `base`  Путь для вычисления относительных путей из входных файлов.
                                `content`  Входная карта ресурсов, полезно если вы сжимаете
                                           JS который был сгенерирован из другого оригинального
                                           кода. Укажите "inline" если карта ресурсов
                                           включена внутри ресурсов.
                                `filename`  Имя файла и/или расположение источника вывода
                                            (устанавливает атрибут `file` в файле ресурсов).
                                `includeSources`  Передаёт флаг если вы хотите включить
                                                  содержимое файлов ресурсов в
                                                  в карту ресурсов как свойство sourcesContent.
                                `names` Включает символьные имена в карту ресурсов.
                                `root`  Путь до оригинальных ресурсов для включения в
                                        карту ресурсов.
                                `url`  Если указана, путь до карты ресурсов добавляется в
                                       `//# sourceMappingURL`.
    --timings                   Отображение времени выполнения операций в STDERR.
    --toplevel                  Сжать и/или исказить переменные в области верхнего уровня.
    --verbose                   Печатать диагностические сообщения.
    --warn                      Печатать сообщения предупреждений.
    --wrap <имя>               Внедрить всё в большую функцию, делая
                                доступными переменные “exports” и “global”. Вам
                                нужно передать аргумент в эту опцию для
                                указания имени, которое возьмёт ваш модуль
                                когда включён, допустим, в браузер.

Укажите --output (-o), чтобы указать выходной файл. В противном случае вывод показывается в STDOUT.


Руководство по UglifyJS

Страница man отсутствует.

Примеры запуска UglifyJS

Улучшить внешний вид файла /var/www/html/dvwa/vulnerabilities/javascript/source/medium.js, который будет передан из стандартного ввода:

cat /var/www/html/dvwa/vulnerabilities/javascript/source/medium.js | uglifyjs -b

Сжать и/или исказить переменные в области верхнего уровня, не соединять последовательные простые операторы, используя оператор запятой:

uglifyjs file.js -c toplevel,sequences=false

Установка UglifyJS

Установка в Kali Linux

sudo apt install uglifyjs

Установка в BlackArch

Программа предустановлена в BlackArch.

sudo pacman -S uglify-js

Установка на Debian, Linux Mint, Ubuntu

sudo apt update
sudo apt install uglifyjs

Онлайн-сервис UglifyJS

Устанавливать программу на компьютер не обязательно, автор создал страницу, где можно попробовать UglifyJS: http://lisperator.net/uglifyjs/ (найдите надпись «Open demo»).

Вставьте свой код в левое поле. Нажмите «Uglify!» чтобы получить сжатый вывод справа. Левая часть превратится в редактор Ymacs. На этом этапе, если вы щёлкните любой токен в минифицированной области, то редактор слева переместится на исходное расположение минифицированного токена.

Установите флажок «As I type», чтобы включить минификацию на лету, по мере ввода.

Когда компрессор выдаст предупреждение, на панели инструментов появится мигающая кнопка. Щёлкните по ней, чтобы отобразить предупреждения (временно закрывает область с минимизированным кодом). Щёлкните предупреждение в списке, чтобы перейти к тому месту в исходном коде, которое его вызвало. Если у вас появились предупреждения при использовании «on-the-fly» и затем по мере ввода они были исправлены, список обновится автоматически.

Вы можете включить/выключить compressor (сжатие), mangler (искажение кода) и beautifier (улучшить читаемость кода). Для дополнительного контроля проверьте кнопки справа («Compressor…» и «Codegen…»). Эти параметры сохраняются в localStorage, они будут запомнены при следующем посещении той страницы.

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты UglifyJS

Инструкции по UglifyJS


Близкие программы:

  • JS Beautifier (88%)
  • JStillery (88%)
  • de4js (88%)
  • TrID (55%)
  • YARA (55%)
  • usbrip (RANDOM - 0.9%)
  • Рекомендуется Вам:

    Comments are Closed