Uglify JS добавление файлов без удаления пробелов - PullRequest
3 голосов
/ 05 февраля 2020

Я использую Uglify JS, чтобы искажать и сжимать код JavaScript моего SPA. Это нормально для производства, однако я хотел бы просто добавить все файлы JS при компиляции в режиме отладки.

Я попытался опустить опции -c -m (сжатие и искажение), но это не работал, он просто продолжал сжимать и искажать исходные файлы

Я бы хотел избежать использования другого инструмента или, что еще хуже, написать свой собственный, просто добавив набор JavaScript файлов

РЕДАКТИРОВАТЬ

test0. js входной файл:

var test1 = 0;
var test2 = 1;
var test3 = test1 + test2;

test1. js входной файл:

var test4 = 0;
var test5 = 1;
var test6 = test4 + test5;

команда I run (искажение и сжатие не указаны):

uglify js test0. js test1. js -o out. js

выход I получить:

var test1=0;var test2=1;var test3=test1+test2;var test4=0;var test5=1;var test6=test4+test5;

вывод Я бы ожидал:

var test1 = 0;
var test2 = 1;
var test3 = test1 + test2;
var test4 = 0;
var test5 = 1;
var test6 = test4 + test5;

Я могу подтвердить, Uglify JS удаляет все байты CR / LF из файлов, я хотел бы избегать этого

enter image description here

1 Ответ

1 голос
/ 05 февраля 2020

Используя ваш пример, мы видим, что uglify на самом деле не искажает и не обрабатывает ваш код. Он просто удаляет пробелы.

Это происходит потому, что (как и большинство вещей, которые обрабатывают код на мета-уровне) ваш код анализируется в AST . Это абстрактное представление вашего исходного кода, в котором содержит только актуальные команды .

. Это означает, что любое форматирование теряется как более или менее самый первый шаг, который выполняет uglify, и нет никакого способа восстановить его.

См. также эту проблему . Лучший способ добиться прослеживаемости при разработке - использовать исходные карты, которые uglify может генерировать с опцией --source-map.

Это создаст отдельный файл .map, который находится рядом с вашим увеличенным файлом и содержит информацию о том, какая строка содержит какой код.

...